Si je suis connecté à un système via SSH, existe-t-il un moyen de copier un fichier dans mon système local sans déclencher un autre terminal ou une session écran et effectuer scp ou quelque chose de similaire ou sans effectuer de SSH depuis le système distant vers le système de stockage distant? système local?
258
scp file.foo [email protected]:file.foo
: PRéponses:
Connexion maître
C'est plus facile si vous planifiez à l'avance.
Ouvrez une connexion principale la première fois. Pour les connexions suivantes, acheminez les connexions esclaves via la connexion maître existante. Dans votre
~/.ssh/config
, configurez le partage de connexion pour qu'il se produise automatiquement:Si vous démarrez une session ssh avec la même connexion (utilisateur, port, machine) qu'une connexion existante, la seconde session sera tunnelée sur la première. L'établissement de la deuxième connexion ne nécessite aucune nouvelle authentification et est très rapide.
Ainsi, pendant que vous avez une connexion active, vous pouvez rapidement:
scp
oursync
;Expéditeur
Sur une connexion existante, vous pouvez établir un tunnel ssh inversé. Sur la ligne de commande ssh, créez un transfert à distance en passant,
-R 22042:localhost:22
où 22042 est un numéro choisi au hasard, différent de tout autre numéro de port de la machine distante. Ensuite,ssh -p 22042 localhost
sur la machine distante, vous êtes connecté à la machine source. vous pouvez utiliserscp -P 22042 foo localhost:
pour copier des fichiers.Vous pouvez automatiser cela davantage avec
RemoteForward 22042 localhost:22
. Le problème, c'est que si vous vous connectez au même ordinateur avec plusieurs instances de ssh, ou si quelqu'un d'autre utilise le port, vous n'obtenez pas le transfert.Si vous n'avez pas activé le transfert à distance depuis le début, vous pouvez le faire sur une session ssh existante. Type Enter
~C
Enter-R 22042:localhost:22
Enter. Voir «Caractères d'échappement» dans le manuel pour plus d'informations.Il existe également des informations intéressantes dans ce fil de défaillance de serveur .
Copier coller
Si le fichier est petit, vous pouvez le taper et le copier-coller à partir de la sortie du terminal. Si le fichier contient des caractères non imprimables, utilisez un codage tel que base64 .
De manière plus pratique, si le transfert X est actif, copiez le fichier sur la machine distante et collez-le localement. Vous pouvez diriger des données vers et depuis
xclip
ouxsel
. Si vous souhaitez conserver le nom de fichier et les métadonnées, copiez-collez une archive.la source
Un autre moyen simple (IMO) serait:
Ou si vous préférez quelque chose comme une interface graphique, essayez Midnight Commander . Ils appellent la fonctionnalité Shell-Link . La plupart des distributions les ont dans leurs systèmes d’emballage
mc
.la source
mc
est le plus rapide à utiliser.tgz
fichiers tout le temps :)SSH supporte quelques commandes, via le caractère d'échappement (
~
par défaut):Le
!args
semble être le plus proche de ce que vous voulez. Notez que vous devez avoirPermitLocalCommand
activé votre/etc/ssh_config
fichier pour que les~C
commandes fonctionnent (voirman ssh_config
).Vous pouvez réutiliser la même session ssh si vous configurez un
ControlMaster
inssh_config
. Si tu fais ça:techniquement, vous n'avez jamais quitté la session SSH et n'avez pas besoin de vous authentifier à nouveau. Probablement plus compliqué que vous voudriez, mais je ne peux pas penser à un autre moyen facile.
la source
!args
de message d'aide.args
n'est pas dans le premier message d'aide (~?
), mais dans le second (une fois que vous entrez l'ssh>
invite avec~C
, vous pouvez taperhelp
à l'ssh>
invite)Ce sont toutes des méthodes très compliquées.
Vous pouvez monter le système de fichiers distant sur votre ordinateur local avec
sshfs
:Ensuite, vous pouvez copier coller le fichier avec Nautilus, Gnome, Konqueror, Dauphin, Bash ou autre.
la source
sshfs -oIdentityFile=~/.ssh/keyfile.pem [email protected]:/ /mnt/sshfs/
-R
pour les connexions distantes ou locales) ou-L
les ports de transfert ( pour les applications locales à distantes) permettent le transfert de fichiers, en supposant qu'un démon de transfert de fichiers est à l'écoute de l'autre côté.Mais rien de tout cela n’est vraiment nécessaire, IMO. Le protocole SSH prend en charge plusieurs canaux sur une seule connexion et le client OpenSSH prend en charge le multiplexage. En supposant que vous avez
ControlMaster
etControlPath
mis en place (ControlPersist
est utile aussi),la source
Une approche encore plus simple: ouvrez Filezilla (ou votre navigateur ftp préféré), ouvrez une connexion SSH au même site, trouvez le fichier et faites-le glisser dans votre structure de fichier locale. Si vous débutez avec Filezilla, utilisez la fonction "Gestionnaire de site" pour vous reconnecter rapidement la prochaine fois.
Oui, je sais que cela est évident pour la plupart d'entre vous (et pas précisément sur le point), mais certains (comme moi) qui ont trouvé ce fil de discussion à la recherche d'une solution de terminal uniquement ont peut-être oublié l'évidence.
la source
ssh://SERVER
.Ce que j’ai trouvé être la solution la meilleure et la plus efficace est d’utiliser
xclip-copyfile
etxclip-pastefile
.Sur le serveur, vous utilisez
xclip-copyfile
pour copier un ou plusieurs fichiers. Ces fichiers sont ensuite disponibles sur votre serveur local. Là, vous pouvez utiliserxclip-pastefile
.Cela évite d’utiliser
scp
ou d’avoir un serveur ssh local. Je l'utilise avec cygwin par exemple. Le seul problème est que cela nécessite une installationxclip
si vous ne l'avez pas déjà. Oh, et cela fonctionne aussi avec les fichiers binaires.la source
L'une des nombreuses raisons pour lesquelles nous utilisons SecureCRT - bien que nous préférions utiliser des logiciels open source lorsque cela est pratique - est la facilité de transfert de fichiers. Il n'y a tout simplement pas de remplacement direct dans le monde des F / OSS.
SecureCRT a commencé comme un programme Windows pur au milieu des années 1990, mais a été porté sur Mac OS X et Linux il y a quelques années .
SecureCRT présente trois fonctionnalités principales pour le transfert de fichiers depuis et vers un système sur lequel vous êtes SSH:
ZModem , YModem , XModem , Kermit et ASCII - SecureCRT est un émulateur de terminal classique qui prend en charge plusieurs protocoles de transfert de fichiers dans la bande.
Le plus simple à utiliser est ZModem. Lorsque vous tapez quelque chose comme
sz file-to-download
sur la ligne de commande distante, lesz
programme distant écrit une séquence d'échappement qui indique à SecureCRT de commencer immédiatement le téléchargementfile-to-download
dans le répertoire de téléchargement par défaut.Une bonne idée est que le répertoire de téléchargement est personnalisable par session. Nous utilisons cela pour créer des répertoires par site sur le serveur de fichiers de notre bureau principal, ce qui évite de trier manuellement les fichiers téléchargés.
(
sz
est le programme "send ZModem", qui fait partie dulrzsz
paquet. Il est déjà emballé pour la plupart des systèmes Unixy. Si, pour une raison quelconque, votre système distant ne l’a pas déjà installé et vous ne pouvez pas installer facilement un paquet binaire, le Le paquet source est petit et très portable. Plus d’une fois, j’ai dû envoyer unlrzsz
fichier "sharchive" ouuuencode
'd tarball à un système distant allégé pour pouvoir y placer des fichiers ZModem.)SFTP - SecureCRT a une implémentation SFTP de base étroitement intégrée.
Par "étroitement intégré", j'entends par là que lorsque vous donnez la commande de menu ou le raccourci clavier SFTP, un nouvel onglet connecté au site distant s'ouvre via la même connexion SSH. Par conséquent, vous n'avez pas besoin de vous reconnecter et la connexion est établie un peu plus rapidement que si vous aviez ouvert une connexion SFTP distincte sur le même serveur.
Je caractérise la fonctionnalité SFTP comme "de base", car VanDyke Software dispose d’un produit de transfert de fichiers distinct, SecureFX . Il est plus fonctionnel que le client SFTP intégré et s’intègre également à SecureCRT.
La fonctionnalité SFTP de SecureCRT vous permet de configurer des répertoires local et distant par défaut, distincts de la configuration de ZModem.
Cette fonctionnalité SFTP a une sorte d’interface de base en ligne de commande, imitant le
sftp
programme d’OpenSSH , à ceci près qu’elle présente des avantages tels que l’ Tabachèvement de la commande. Ainsi, récupérer un fichier distant appelésomefile.tar.gz
peut être aussi simple queget so
TabEnter.Glisser-déposer - Si vous glissez-déposez un fichier dans la fenêtre du terminal, celui-ci tape automatiquement
rz
pour vous et commence à envoyer le fichier.Vous pouvez également ouvrir un onglet SFTP et déposer un fichier sur cet onglet pour l'envoyer via SFTP. Ainsi, l' envoi d' un fichier à un système distant pourrait être aussi simple que Alt-P, glisser , déposer .
Nous constatons que les transferts se font beaucoup plus rapidement via SFTP, probablement parce que c'est un protocole basé sur TCP, donc il tire parti des grandes fenêtres coulissantes des piles TCP / IP modernes . ZModem a été conçu à l’époque où une taille de bloc de 64 Ko était considérée comme "grande". Ainsi, une grande partie de la vitesse potentielle d'une liaison est absorbée dans ZModem pendant que chaque extrémité attend des accusés de réception de transfert de bloc.
Une bonne chose à propos du mode de fonctionnement glisser-déposer est qu’il évite l’utilisation de ZModem. Lorsque vous tapez
rz
sur le système distant, SecureCRT affiche automatiquement un sélecteur de fichiers. Vous avez alors environ une minute pour rechercher et sélectionner le fichier avant que le côté distant n'expire. Cela crée une ambiance de course contre la montre qui n’est pas agréable. Glisser-déposer vous permet de trouver le fichier à votre guise, puis de lancer le transfert d'un simple mouvement rapide de la souris.Nous utilisons toujours la méthode manuelle, en commençant le transfert avec une
rz
commande explicite . Ceci est dû au fait que SecureCRT vous permet de configurer un répertoire de téléchargement par session, qui pointe vers le dossier du serveur de fichiers contenant toujours la dernière version du logiciel exécuté par le site distant en question. Pour de tels transferts, il n'y a pas de course contre la montre, car le sélecteur de fichiers s'ouvre au bon endroit pour commencer.la source
Utilisation "!" convertir le fichier en une représentation ASCII de votre fichier (par exemple
! uuencode myfile.bin >uuencode.dat
). Alors utilisez! cat uuencode.dat >target.dat
. Après cela, utilisez uudecode sur le côté cible:! uudecode target.dat >myfile.bin
la source