scp between two remote hosts from my local
In the past, the way in which scp worked, when called (naively) to copy files between remote systems, was very inconvenient: if you wrote for instance
scp user1@remote1:/home/user1/file1.txt user2@remote2:/home/user2/file1.txt scp would first open an ssh session on remote1, and then it wouldrun scp from there to remote2. For this to work, you would have to set up the autohorization credentials for remote2 on remote1.
The modern way to do it, instead, (modern because it has been implemented only a few years ago, and perhaps not everybody has a -3-capable scp) requires two steps. First the use of the -3 option, as follows:
scp -3 user1@remote1:/home/user1/file1.txt user2@remote:/home/user2/file1.txt The -3 option instructs scp to route traffic through the pc on which the command is issued, even though it is a 3rd party to the transfer. This way, authorization credentials must reside only on the issuing pc, the third party.
The second necessary step is to use ~/.ssh/config to set up all options for the connection to both remote1 and remote2, as follows:
Host remote1.example.org Port 2222 IdentityFile /path/to/host1-id_rsa Host remote2.example.org Port 6969 IdentityFile /path/to/host2-id_rsa This way it becomes possible to pass all necessary options to the command, without worrying about the format on the CLI, which remains instead tidy and simple.