Dans le passé, la manière dont scp
a fonctionné, lorsqu'il a été appelé ( naïvement ) pour copier des fichiers entre systèmes distants, était très peu pratique : si vous écriviez, par exemple
scp user1@remote1:/home/user1/file1.txt user2@remote2:/home/user2/file1.txt
scp
ouvrirait d'abord un ssh
sur remote1, puis il exécute scp
de là à remote2. Pour que cela fonctionne, vous devez configurer les informations d'autorisation de remote2 sur remote1.
En revanche, la façon moderne de procéder ("moderne" parce qu'elle a été mise en œuvre il y a quelques années seulement, et que tout le monde n'a peut-être pas une -3
-capable scp
) nécessite deux étapes. La première étape nécessaire consiste à utiliser ~/.ssh/config
pour configurer toutes les options pour la connexion à la fois à remote1 et remote2, comme suit :
Host remote1.example.org
Port 2222
IdentityFile /path/to/host1-id_rsa
Host remote2.example.org
Port 6969
IdentityFile /path/to/host2-id_rsa
De cette façon, il devient possible de passer toutes les options nécessaires à la commande sans ambiguïté : par exemple, si nous avions dit sur le CLI utiliser le port 2222 sans la configuration ci-dessus, il n'aurait pas été clair si nous faisions référence à distant1 ou à à distance2 et de même pour le fichier contenant les clés cryptographiques. De cette façon, le CLI reste ordonné et simple.
Deuxièmement, utilisez le -3
comme suit :
scp -3 user1@remote1:/home/user1/file1.txt user2@remote2:/home/user2/file1.txt
El -3
L'option indique scp
pour acheminer le trafic via le PC sur lequel la commande est émise, même s'il est une tierce partie au transfert. De cette façon, les informations d'autorisation ne doivent résider que sur le PC émetteur, la tierce partie.