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.


Popular posts from this blog

Shrink you container size up to 95%.

alma linux: dnf Module yaml error: Unexpected key in data