J'essaie de copier un fichier d'un serveur distant sur un serveur distant depuis mon ordinateur local . Voici ce que j'essaie de faire.
localA $ scp userB@remoteB:/path/to/file userC@remoteC:/path
Le problème est que je dois passer deux mots de passe pour userB et userC sur les ordinateurs distants.
Selon Garron ce qui précède devrait fonctionner, mais la permission m'a été refusée.
Permission denied (gssapi-keyex,gssapi-with-mic,publickey,keyboard-interactive).
lost connection
Aucune suggestion?
Cette question existe déjà sur le superutilisateur:
https://superuser.com/questions/686394/scp-between-two-remote-hosts-from-mon-third-pc
scp -3 user1@remote1:/home/user1/file1.txt user2@remote2:/home/user2/file1.txt
Comme décrit ici, l'option -3 indique à scp de router le trafic via le PC sur lequel la commande est émise.
Ce qui précède est vrai si remote1 et remote2 sont sur le même réseau.
Dans le cas où: - vous devez utiliser le transfert de port
Si vous pouvez utiliser ssh sur les deux serveurs distants à partir de votre serveur local (local -> remote1 & local -> remote2), vous pouvez essayer:
ssh -A -t user1@remote1 scp srcpath user2@remote2:destpath
Ceci transférera directement de remote1 à remote2 en utilisant vos informations d'identification locales jusqu'au bout.
Si vous ne souhaitez pas que les mots de passe vous soient demandés, vous devez configurer le fichier registered_keys sur les télécommandes.
Ceci est possible en utilisant la ligne de commande suivante dans le terminal linux:
scp -3 utilisateur1 @ ip: chemin/depuis/répertoire/utilisateur2 @ ip: chemin/vers/répertoire
une invite apparaît demandant des mots de passe comme ceci:
mot de passe utilisateur1 @ ip: utilisateur2 @ mot de passe ip:
Si vous donnez les deux mots de passe dans l'ordre en appuyant sur entrée après le premier mot de passe, il devrait accepter mais ne le fera pas. Même si vous donnez à nouveau les deux mots de passe dans l’ordre mais sans appuyer sur entrée après le premier mot de passe, il ne sera plus accepté.
Vous devez d'abord donner l'utilisateur 2, puis appuyer sur entrée, puis taper le mot de passe de l'utilisateur1 et appuyer sur entrée. Cela fonctionnera.
Je sais que cela ne semble pas bien, mais seulement cela fonctionnera. Ceci est un bug dans scp.
Je trouve que -o "ForwardAgent yes”
fait l'affaire:
localA $ scp -o "ForwardAgent yes” userB@remoteB:/path/to/file userC@remoteC:/path
J'aime mieux cela que le -3
car je ne veux pas d'une machine intermédiaire ralentissant les choses. J'aime @RubenCaro répondre aussi, mais cela semble plus direct.
Vous n'avez besoin que de mots de passe si vous n'avez pas d'entrées dans le fichier authorised_keys. Une fois que vous vous êtes connecté aux 2 serveurs (localA -> remoteB & remoteB -> remoteC) et que vous avez établi la connexion sécurisée, votre commande initiale devrait fonctionner.