SSH - un moyen de transférer des fichiers sans ouvrir une session SFTP distincte?
Pas vraiment une question de programmation, mais pertinentes pour de nombreux programmeurs...
Disons que j'ai ouvert une session SSH sur un autre ordinateur.
à distance:html avalys$ ls
bienvenue.msg index.html readme.txt
distance:html avalys$
Est-il une commande que je peux taper dans mon shell distant qui va immédiatement le transfert de l'un des fichiers dans le répertoire courant (par exemple, la bienvenue.msg) à mon ordinateur local, c'est à dire
à distance:html avalys$ stransfer de bienvenue.msg
L'extraction de /home/avalys/html/bienvenue.msg de bienvenue.msg
/home/avalys/html/bienvenue.msg 100% 23 KB 23.3 KB/s 00:00
distance:html avalys$
Le seul moyen que je connaisse pour ce faire est d'ouvrir un parallèle SFTP session et CD de mon répertoire en cours dans la session SSH, ce qui est un réel PITA lors de l'administration d'un serveur à distance.
EDIT: je suis conscient de la possibilité d'utiliser un reverse sftp/scp de connexion, mais qui implique plus de la frappe. Ce serait génial si je pouvais, saisissez simplement le nom de la commande (par exemple "stransfer"), et le fichier(s) que je veux transféré, et ont Juste Travailler.
source d'informationauteur avalys
Vous devez vous connecter pour publier un commentaire.
Vous pourriez mettre en place un tel inversé de connexion de transfert w/
ssh -Rport:127.0.0.1:22 user@host for scp back.
Use scp user@host:port
pour y accéder.Ici, c'est mon préféré de la solution à ce problème [comme donné sur un double question j'ai demandé]. Configurer un tunnel ssh inverse lors de la création de la session ssh. Ceci est rendu facile par deux bash fonction: grabfrom() doit être défini sur l'hôte local, tandis que le grab() doit être défini sur l'hôte distant. Vous pouvez ajouter des autres ssh variables que vous utilisez (par exemple,- X ou -Y) comme bon vous semble.
Utilisation:
Positifs:
Négatifs:
Travaux futurs:
C'est encore assez encombrants. Évidemment, il serait possible de traiter le problème d'authentification par la mise en place des clés ssh de manière appropriée et c'est encore plus facile de permettre la spécification d'un répertoire distant par l'ajout d'un paramètre à saisir()
Plus difficile est de traiter les autres négatifs. Il serait bien de choisir un port dynamique, mais aussi loin que je peux voir, il n'y a pas de manière élégante à passer que le port de la coquille sur l'hôte distant; du mieux Que je peux dire, OpenSSH ne vous permet pas de fixer arbitrairement les variables d'environnement sur l'hôte distant et bash ne pouvez pas prendre les variables d'environnement à partir d'un argument de ligne de commande. Même si tu pouvais choisir un port dynamique, il n'y a aucun moyen de s'assurer qu'il n'est pas utilisé sur la machine distante sans avoir à le brancher en premier.
Dans la recherche de ce que j'ai trouvé un programme qui fonctionne comme une baisse-dans le remplacement pour le client openssh, zssh.
Fonctionne comme un charme.
Vous pouvez monter une connexion ssh avec sshfs. De cette façon, vous pouvez transférer des fichiers à l'intérieur de la même connexion ssh, tout en utilisant n'importe quel client ssh que vous aimez le mieux. Vous pouvez même le configurer pour automount si vous le souhaitez.
Si vous êtes dans l'application de correctifs choses (qui à mon humble avis ne devrait pas être corrigé), jetez un oeil à ssh-xfer
Vous pouvez écrire un script bash nommé stransfer qui permettrait de prendre un nom de fichier en argument, alors il faudrait introduire le nom du fichier dans la commande scp, en supposant que le serveur et le chemin d'accès aux fichiers sur le serveur ne changent pas.
Ou si le fichier est toujours le même, vous pouvez créer un alias dans votre ~/.bashrc fichier.
alias getwelcome='scp avalys@remotehost:/home/avalys/html/welcome.msg .'
J'ai eu la même pensée que Paul Tomblin a écrit dans un commentaire à la question. Vieux sessions de terminal utilisé pour l'utiliser x-, y-et z-modem de protocoles et d'outils (
sz
etrz
pour le z-modem variantes) pour obtenir quelque chose comme cela. Je ne suis pas sûr si ces travaux au cours d'une session ssh, mais il pourrait être la peine d'essayer.Fink fournit un
lrzsz
paquet avec ces outil sur Mac OS X.Ce qui en fait un wiki de la communauté, parce que j'étais mal à l'aise pour se rep après que Paul a eu en premier...
À l'école, si je transfère un fichier à partir d'un système linux à l'autre, j'ai l'habitude de distance à l'aide de ssh et ensuite utiliser scp pour transférer le fichier à partir de la télécommande du système de retour de mon ordinateur. Pas sûr si c'est ce que vous cherchez ou si c'est même applicable dans votre cas, mais c'est généralement ma façon de se déplacer à avoir à ouvrir une autre fenêtre de terminal.
Juste pour clarifier, si vous n'êtes pas familier avec scp vous auriez encore à préciser le lieu où vous souhaitez placer le fichier sur votre ordinateur, mais pour moi de toute façon c'est généralement une chose plus facile à mémoriser que l'emplacement du fichier sur l'ordinateur distant. Voici un lien qui peut être utile: http://www.computerhope.com/unix/scp.htm
https://superuser.com/questions/259481/reverse-scp-over-ssh-connection
Apparemment, vous pouvez également naviguer autour de la n des trucs dans le sftp console, et
get
prend un chemin d'accès complet. Des Copies dans le répertoire à partir duquel vous avez exécutésftp
.