Dans le passé, la façon dont scpfonctionnait la copie de fichiers entre systèmes distants ( naïvement ) était très gênante: si vous écriviez, par exemple
scp user1@remote1:/home/user1/file1.txt user2@remote2:/home/user2/file1.txt
scpouvrirait d’abord une sshsession sur remote1, puis s’exécuterait scpde là vers remote2. Pour que cela fonctionne, vous devez configurer les informations d'identification d'autorisation pour remote2 sur remote1.
La façon moderne de le faire (au contraire, "moderne" parce qu'elle a été mise en œuvre il y a seulement quelques années et que tout le monde n'a peut-être pas la -3capacité de le faire scp) nécessite deux étapes. La première étape nécessaire consiste ~/.ssh/configà configurer toutes les options pour la connexion à distance à distance1 et à distance2, 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 transmettre toutes les options nécessaires à la commande sans ambiguïtés : par exemple, si nous avions dit sur le port 2222 d'utilisation de la CLI sans la configuration ci-dessus, il aurait été difficile de savoir s'il s'agissait de remote1 ou de remote2 , 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 l' -3option suivante:
scp -3 user1@remote1:/home/user1/file1.txt user2@remote2:/home/user2/file1.txt
L' -3option indique scpd'acheminer le trafic via le PC sur lequel la commande est émise, même s'il s'agit d'une 3ème partie du transfert. De cette manière, les informations d'identification de l'autorisation ne doivent résider que sur le PC émetteur, le tiers.