In passato, il modo in cui scp
funzionava, quando veniva chiamato ( ingenuamente ) per copiare file tra sistemi remoti, era molto scomodo: se hai scritto, per esempio
scp user1@remote1:/home/user1/file1.txt user2@remote2:/home/user2/file1.txt
scp
aprirebbe prima una ssh
sessione su remote1 e quindi verrebbe eseguito scp
da lì a remote2. Affinché ciò funzioni, è necessario impostare le credenziali di autorizzazione per remote2 su remote1.
Il modo moderno di farlo, invece, ("moderno" perché è stato implementato solo pochi anni fa, e forse non tutti hanno una -3
capacità scp
) richiede due passaggi. Il primo passaggio necessario è utilizzare ~/.ssh/config
per impostare tutte le opzioni per la connessione a remote1 e remote2, come segue:
Host remote1.example.org
Port 2222
IdentityFile /path/to/host1-id_rsa
Host remote2.example.org
Port 6969
IdentityFile /path/to/host2-id_rsa
In questo modo diventa possibile passare tutte le opzioni necessarie al comando senza ambiguità : per esempio, se avessimo detto sulla CLI di usare la porta 2222 senza la configurazione sopra, non sarebbe chiaro se ci riferissimo a remote1 o remote2 , e allo stesso modo per il file contenente le chiavi crittografiche. In questo modo la CLI rimane ordinata e semplice.
In secondo luogo, utilizzare l' -3
opzione, come segue:
scp -3 user1@remote1:/home/user1/file1.txt user2@remote2:/home/user2/file1.txt
L' -3
opzione indica scp
di instradare il traffico attraverso il PC su cui viene emesso il comando, anche se è di terze parti al trasferimento. In questo modo, le credenziali di autorizzazione devono risiedere solo sul PC emittente, la terza parte.