No passado, a maneira em que 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 sessão ssh
no controle remoto1 e, em seguida, executaria scp
de lá para o remoto2. Para que isso funcione, você teria que configurar as credenciais de autorização para remote2 no remote1.
A maneira moderna de fazer isso, em vez disso ("moderna" porque foi implementada há apenas alguns anos, e talvez nem todos tenham -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 o 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
Desta forma, torna-se possível passar todas as opções necessárias para o comando sem ambigüidades : por exemplo, se dissemos no CLI usar a porta 2222 sem a configuração acima , não ficaria claro se estávamos nos referindo a remote1 ou remote2 , e também no arquivo contendo as chaves criptográficas. Desta forma, o CLI permanece limpo e simples.
Em segundo lugar, use a opção -3
, da seguinte forma:
scp -3 user1@remote1:/home/user1/file1.txt user2@remote2:/home/user2/file1.txt
A opção -3
instrui scp
a rotear o tráfego através do PC no qual o comando é emitido, mesmo que seja um terceiro da transferência. Desta forma, as credenciais de autorização devem residir apenas no PC emissor, o terceiro.