Connexion SCP inversée sur SSH

17

J'ai souvent besoin d'un fichier provenant d'un serveur lorsque je suis sur mon ordinateur portable. Mais si je ne sais pas où se trouve ce fichier, je dois sshaccéder au serveur, regarder autour de moi exit, puis scp server:file .. Si je travaille avec mon bureau et mon serveur, qui ont tous deux des adresses IP statiques, je peux simplement SCP le fichier en sens inverse ( scp desktop:~ file), mais je ne peux pas le faire pour mon ordinateur portable. Existe-t-il un bon moyen de SCP un fichier en arrière via une connexion SSH? Pour que l'ordinateur auquel je me connecte avec SSH envoie un fichier en arrière au client?

pavpanchekha
la source
Pourquoi ne pas utiliser mDNS?
Ignacio Vazquez-Abrams
1
Je pense que cette question a déjà été correctement répondu ici: unix.stackexchange.com/a/2869
shellster

Réponses:

20

Ce serait beaucoup plus facile avec SFTP, qui est une extension de SSH qui prend en charge des opérations de fichiers plus complexes que SCP. Pratiquement toutes les distributions Unix et Linux modernes le prennent en charge. Pour l'utiliser, il suffit d'exécuter cette commande pour se connecter au serveur:

sftp server

Ensuite, vous pouvez utiliser les commandes lset cdpour parcourir et trouver le fichier que vous recherchez. Une fois que vous l'avez trouvé, utilisez la getcommande pour le télécharger. Par exemple, pour télécharger file.txtdans votre répertoire de travail actuel sur le serveur vers votre répertoire de travail actuel sur votre machine locale, exécutez simplement:

get file.txt

Pour télécharger /home/pavpanchekha/textfiles/file.txtsur le serveur ~/textfiles/sur votre ordinateur local, exécutez plutôt:

get /home/pavpanchekha/textfiles/file.txt ~/textfiles/

Inversement, vous pouvez également télécharger des fichiers de cette manière. Pour télécharger file.txtdepuis votre répertoire de travail actuel local vers le répertoire de travail actuel du serveur, tapez:

put file.txt

Vous pouvez également utiliser des chemins complets pour chacun comme vous le pouvez avec get:

put ~/textfiles/file.txt /home/pavpanchekha/textfiles/file.txt

Pour une liste complète des commandes SFTP disponibles, exécutez simplement helpà l' sftp>invite.

Patchs
la source
1
C'est plutôt cool, merci. Existe-t-il un moyen d'en lancer un à l'envers si je suis déjà connecté à SSH? Sinon, je me retrouve quelque part, réalisant que je veux transférer un fichier, quitter la connexion SSH, établir une connexion SFTP, quitter cela et revenir à SSH.
pavpanchekha
2
@pav: La SSH_CLIENTvariable d'environnement contient l'adresse IP de l'hôte qui se connecte entre autres informations. Vous pouvez l'utiliser pour créer un alias de shell afin de retourner facilement SFTP à l'hôte d'origine. Ajoutez simplement cette ligne ~/.bashrcsur le serveur: alias sftpback="sftp $(echo $SSH_CLIENT | awk '{print $1}')" Déconnectez-vous puis reconnectez-vous de SSH pour que la modification prenne effet, ou exécutez-la comme s'il s'agissait d'une commande pour qu'elle prenne effet immédiatement. À partir de là, vous pouvez simplement réexécuter sftpbackSFTP vers le client à partir duquel vous vous connectez, quel que soit celui-ci.
Patchs du
C'est mieux !!! Merci de m'avoir sauvé de NANO (édition de fichier en ligne) cela rend le processus si simple.
Mohsin
0

Le gestionnaire de fichiers de la console Midnight Commander (mc) possède un système VFS qui permet la connexion SFTP / la gestion de fichiers vers des serveurs distants. Il s'exécute également dans Cygwin sur Windows. L'interface par défaut affiche deux panneaux indépendants; nous pourrions ouvrir le répertoire distant SFTP dans l'un d'eux et transférer facilement des fichiers vers / depuis l'autre panneau. Comprend un éditeur / visualiseur de fichiers (mcedit) avec mise en évidence de la syntaxe.

Fjor
la source