No passado, a maneira como scp
funcionava, quando chamada ( ingenuamente ) para copiar arquivos entre sistemas remotos, era muito inconveniente: se você escrevesse, por exemplo
scp user1@remote1:/home/user1/file1.txt user2@remote2:/home/user2/file1.txt
scp
primeiro abriria uma ssh
sessão no remote1 e, em seguida, executaria a scp
partir daí para o remote2. Para que isso funcione, você teria que configurar as credenciais de autorização para remote2 no remote1.
A maneira moderna de fazê-lo, em vez disso, ( "moderna" porque foi implementado apenas alguns anos atrás, e talvez nem todo mundo tem um -3
-capable scp
) requer duas etapas. A primeira etapa necessária é usar ~/.ssh/config
para configurar todas as opções para a conexão com o remote1 e remote2, da seguinte maneira:
Host remote1.example.org
Port 2222
IdentityFile /path/to/host1-id_rsa
Host remote2.example.org
Port 6969
IdentityFile /path/to/host2-id_rsa
Dessa maneira, torna-se possível passar todas as opções necessárias para o comando sem ambiguidades : por exemplo, se disséssemos na CLI usar a porta 2222 sem a configuração acima, não seria claro se estávamos nos referindo a remote1 ou remote2 , e da mesma forma para o arquivo que contém as chaves criptográficas. Dessa forma, a CLI permanece organizada e simples.
Em segundo lugar, use a -3
opção da seguinte maneira:
scp -3 user1@remote1:/home/user1/file1.txt user2@remote2:/home/user2/file1.txt
A -3
opção instrui scp
a rotear o tráfego pelo PC no qual o comando foi emitido, mesmo que seja um terceiro participante da transferência. Dessa forma, as credenciais de autorização devem residir apenas no PC emissor, na terceira parte.