web-dev-qa-db-fra.com

Est-il possible de SCP d'une télécommande à une locale tout en étant connecté à la télécommande et sans connaître l'adresse IP du local?

Je souhaite régulièrement copier un fichier d'une session de terminal distant sur mon ordinateur local. En général, je me déconnecte de la session distante et appelle un transfert scp de local pour copier le fichier de distant à local. Mais cela semble un peu long. Je souhaite transférer le fichier en étant connecté à la télécommande via SSH pour gagner du temps. Ma machine locale est connectée à Internet à partir d'une plage IP dynamique et je ne suis donc pas tout à fait sûre de la connexion à distance. Mais sûrement, comme la session à distance provient de mon ordinateur portable, il doit y avoir un raccourci dans scp pour revenir à mon ordinateur portable ... Bon?

31
jnthnclrk

Vous pouvez utiliser tunneling SSH pour cela.

À l'aide du tunneling, vous pouvez transférer un port TCP de votre ordinateur local vers l'ordinateur distant ou de l'ordinateur distant vers votre ordinateur local. Je l'utilise fréquemment pour transférer, par exemple Ports SMTP ou IMAP d'un ordinateur distant derrière un pare-feu vers mon ordinateur local (puis d'accéder aux services localement, comme s'ils s'exécutaient localement).

Pour transférer le port 22 (SSH) de votre machine locale vers la machine distante, essayez ceci:

ssh -R12345:localhost:22 yourremoteuser@remotemachine

(Notez que localhost fait référence au nom local de la machine distante)

Après avoir exécuté ceci, vous devriez être capable de rentrer chez vous en utilisant:

ssh -p12345 [email protected]

Lorsque vous utilisez scp, vous feriez quelque chose comme (scp a un P majuscule pour le transfert de port):

scp -P12345 filename 127.0.0.1:/tmp/filename

Le transfert de port dans l'autre sens (de distant à local) utilise -L au lieu de -R.

Les commandes ci-dessus supposent que vous utilisez un client ssh terminal. Les clients graphiques, tels que PuTTY pour Windows, prennent également en charge le tunneling.

19
Daniel Lundmark

Essayez ce qui suit dans la ligne de commande à partir de la machine distante, vous devrez peut-être activer le transfert de port sur votre routeur.

scp <file on remote machine> ${SSH_CLIENT%% *}:<directory on local machine>

Source: Envoyez facilement un fichier à l'hôte à partir duquel vous vous connectez (commandlinefu.com)

6
Patrick McLaren

Peut-être que zssh ?

zssh (Zmodem SSH) est un programme permettant de transférer de manière interactive des fichiers sur un ordinateur distant tout en utilisant le shell sécurisé (ssh). Il s’agit d’une alternative pratique à scp, permettant de transférer des fichiers sans avoir à ouvrir une autre session et à s’authentifier à nouveau.

zssh est un wrapper interactif pour ssh

Il utilise les vénérables implémentations rz, sz du transfert de fichier zmodem.

1
RedGrittyBrick

J'ai voté pour cette question, c'est quelque chose que j'aimerais faire facilement également.

Voici la réponse liée: Comment puis-je SCP d'une machine distante à une machine locale quand je suis en dehors de mon réseau domestique?

Vous devez autoriser l'accès à SSH depuis l'extérieur de votre réseau. Pour ce faire, vous devez transférer un port du routeur haut débit sur le réseau IP de votre serveur. Cependant, l'accès à SSH venant de l'extérieur pose certains problèmes de sécurité. Par conséquent, vous pouvez également rechercher des méthodes permettant de sécuriser SSH, notamment l'authentification par clé et la désactivation complète de l'authentification par mot de passe.

1
Michal Stefanow

Si vous voulez une solution plus simple, ouvrez simplement un compte Dropbox, accédez à la machine distante et lancez wget (version modifiée à partir de ici ): wget --no-check-certificate https://www.dropbox.com/s/2123jshf/ABC.pdf?dl=1 -O abc.pdf

0
alex

Une solution consisterait à suspendre la session SSH sur la machine locale, à effectuer la copie sur la machine locale, puis à reprendre votre session SSH là où vous l'avez laissée.

Par exemple, supposons que je suis connecté à myuser @ remote et que je souhaite copier le fichier lol.txt sur mon ordinateur local. Je veux d’abord suspendre ssh sur mon ordinateur local. Normalement, vous utiliseriez Ctrl-Z suspendre, mais cela ne fonctionnera pas en ssh car il sera envoyé au shell distant. Au lieu de cela, vous devez utiliser la séquence d'échappement ssh Enter~. Donc pour suspendre ssh presse Enter~Ctrl-Z. Maintenant, vous pouvez exécuter des commandes sur votre ordinateur local et faire

user@localmachine:~$ scp user@remote:/path-to-file/lol.txt /dest-path/lol.txt

copier le fichier puis retourner à ssh exactement là où vous l'avez laissé

user@localmachine:~$ fg

0
user213610