Je souhaite télécharger des fichiers de mon ordinateur de bureau vers mon ordinateur portable.
Je peux connecter mon ordinateur de bureau par SSH au serveur d'organisation, puis SSH du serveur à mon ordinateur de bureau.
Les seules commandes acceptées par le serveur d'organisation sont ssh, ssh1 et ssh2.
Comment puis-je télécharger un fichier depuis mon ordinateur de bureau (distant) via le serveur vers mon ordinateur portable (local)?
Réponses:
Les réponses précédentes mentionnent comment utiliser la directive ProxyJump (ajoutée dans OpenSSH 7.3) pour se connecter via un serveur intermédiaire (généralement appelé hôte bastion), mais le mentionnent uniquement comme argument de ligne de commande.
À moins que ce soit une machine sur laquelle vous ne vous connecterez pas à l'avenir, la meilleure chose à faire est de la configurer
~/.ssh/config
.Je mettrais un fichier comme:
Si vous utilisez une version antérieure d'OpenSSH qui ne prend pas en charge ProxyJump, vous devez la remplacer par l'équivalent:
et si votre version locale de ssh était très ancienne et ne supportait pas
-W
:bien que ce dernier nécessite l'
nc
installation de la machine bastion .La beauté de ssh est que vous pouvez configurer chaque destination sur le fichier, et elles s'empileront très bien. Ainsi, vous finissez par travailler avec
office-machine
le nom d'hôte sur tous les outils (ssh, scp, sftp ...) car ils étaient des connexions directes, et ils découvriront comment se connecter en se basant sur ssh_config. Vous pouvez également avoir des caractères génériquesHost *.internal.company.local
pour que tous les hôtes se terminant comme ça passent par un bastion spécifique, et cela s'appliquera à tous. Une fois configuré correctement, la seule différence entre faire une connexion à un saut ou vingt serait le temps de connexion plus lent.la source
Si vous avez un OpenSSH récent (8.0), vous pouvez utiliser le
-J
commutateur (jump) :Avec les versions plus anciennes (mais au moins 7.3), vous pouvez utiliser la
ProxyJump
directive , soit en ligne de commande:ou en
ssh_config
fichier, comme le montre la réponse de @ Ángel.Il existe d'autres options comme
ProxyCommand
ou redirection de port, que vous pouvez utiliser sur des versions encore plus anciennes d'OpenSSH. Ceux-ci sont traités dans OpenSSH prend-il en charge la connexion multi-boutiques?la source
ssh -J userA@orgserv userB@officecomp cat remote/path > local/path
scp
ne prend pas en charge-J
, il pourrait être encore assez nouveau pour prendre en charge l'ProxyJump
option; essayez l'une des autres réponses qui utilisent explicitement cette option.ssh
questions qui suggèrent de modifier votreconfig
pour des hôtes spécifiques lorsqu'une simple option de ligne de commande est suffisante pour faire le travail.-J user@intermediate
chaque fois que je dois me connecter.Parfois, nous pouvons simplement utiliser le pipeline. Cette heure est aujourd'hui.
Vous pouvez également télécharger
Oui, il existe d'autres solutions impliquant le proxy, etc., mais savoir comment le faire est utile.
la source
cat
!Utilisez la
ProxyJump
configuration:la source
Il existe un ancien protocole appelé ZMODEM : peu de programmes le supportent de nos jours, mais quand il fonctionne, il peut être assez pratique.
Vérifiez d'abord si le programme de terminal de votre ordinateur portable prend en charge ZMODEM. (Par exemple, vous pouvez configurer iTerm2 (sur Mac) pour prendre en charge ZMODEM. Un exemple de script est disponible ici .)
Dans votre machine de bureau, exécutez:
sudo apt install lrzsz
Maintenant, tout ce que vous avez à faire est de lancer ssh sur votre machine de bureau et de lancer
sz (filename)
. Le fichier sera téléchargé via votre terminal.la source
Configuration sous ssh de l'utilisateur:
~/.ssh/config
Vous pouvez maintenant copier à partir du serveur intranet directement sur 3 serveurs de saut.
scp [email protected]:/home/user/ ./*
Je préfère cela car il n'est plus nécessaire de spécifier des serveurs de saut avec scp
la source
Via SCP -3:
la source
-3
option est décrite comme «Les copies entre deux hôtes distants sont transférées via l'hôte local». alors que je crois que cette question stipule que l'hôte local ne peut pas accéder à "remote2".-3
. Mais cela suppose que vous pouvez vous connecter de la machine du milieu à la première.-J
/JumpHost
. Bien au contraire car il a la limitation que @Joe mentionne.