C'est possible et relativement facile, même lorsque vous devez utiliser des certificats pour l'authentification (typique des environnements AWS).
La commande ci-dessous copiera les fichiers d'un remotePath
en server2
directement dans votre machine à localPath
. En interne, la demande scp est traitée par le biais d'un proxy. server1
.
scp -i user2-cert.pem -o ProxyCommand="ssh -i user1-cert.pem -W %h:%p user1@server1" user2@server2:/<remotePath> <localpath>
L'autre façon de procéder fonctionne également (télécharger le fichier) :
scp -i user2-cert.pem -o ProxyCommand="ssh -i user1-cert.pem -W %h:%p user1@server1" <localpath> user2@server2:/<remotePath>
Si vous utilisez l'authentification par mot de passe à la place, essayez avec
scp -o ProxyCommand="ssh -W %h:%p user1@server1" user2@server2:/<remotePath> <localpath>
Si vous utilisez les mêmes informations d'identification de l'utilisateur dans les deux serveurs :
scp -o ProxyCommand="ssh -W %h:%p commonuser@server1" commonuser@server2:/<remotePath> <localpath>
El -W
est intégrée dans les nouvelles versions d'OpenSSH, donc cela ne fonctionnera que sur les machines ayant la version minimale (5.4, à moins que votre distribution n'ait déporté des fonctionnalités ; par exemple, OpenSSH 5.3p1 de RHEL6 inclut cette fonctionnalité). Selon les notes de version : http://www.openssh.com/txt/release-5.4
Ajout d'un 'mode netcat' à ssh(1) : "ssh -W hôte:port ..." Ceci connecte stdio sur le client à un seul port sur le serveur. Cela permet, par exemple, d'utiliser ssh comme une commande Proxy pour router les connexions via des serveurs intermédiaires.
%h
y %p
sont des caractères génériques pour l'hôte et le port.