SCP entre duas redes


12

Preciso transferir um arquivo entre dois computadores que não estão conectados à mesma rede. Eu tenho um terceiro computador que pode ver as duas redes através de uma VPN.

No terceiro computador, eu posso fazer:

scp root@firstcomputer:./file ./

E termine a transferência com a seguinte frase:

scp ./file root@secondcomputer:./

Mas não posso fazer isso em apenas uma linha, da seguinte maneira:

scp root@firstcomputer:./file root@secondcomputer:./

A resposta do erro é

ssh: connect to host secondcomputer port 22: No route to host
lost connection

Sei que provavelmente é porque o primeiro computador não pode ver o segundo computador. É possível atribuir um parâmetro ao SCP que lida com o fato de que a máquina que executa o programa SCP é a única que pode ver os dois computadores?

A propósito, o terceiro computador é um Mac com Lion e o punho e o segundo estão executando o Debian.

Respostas:


3

Você deve poder usar um túnel SSH.

Supondo que você esteja tentando transferir um arquivo de um computador remoto ("remoto") para o seu computador local ("local"), estabeleça o túnel através do terceiro computador ("gateway") digitando-o no seu computador local:

ssh -fNL 12345:remote:22 gatewaylogin@gateway

Em seguida, você pode executar uma quantidade ilimitada de comandos SCP nesse túnel (ainda digitando no computador local):

scp -P 12345 remotelogin@localhost://path/to/remote/file /local/path/where/you/want/file

Acabei de testar isso na minha rede e funcionou perfeitamente.

O método acima é bom se a rede remota estiver segura, mas se não estiver segura, você precisará estabelecer um túnel entre o local e o gateway e outro entre o gateway e o remoto, vinculando os dois por um número de porta comum.


21

A opção scp -3 deve ser o que você está procurando. Para colocar no seu exemplo:

scp -3 root@firstcomputer:./file root@secondcomputer:./

Observe que a opção -3 foi introduzida pela primeira vez no OpenSSH 5.7, lançado no início de 2011.


Meu scp não implementa -3 quando eu executar o comand eu recebo scp: opção ilegal - 3 uso: scp [-1246BCEpqrv] ...
JorgeO

1
Está correto. -3 está disponível apenas na versão mais recente do OpenSSH, que não tenho certeza de que o Debian tenha implementado ainda.
Rilindo 26/07

Ah, desculpe por isso. Atualizada a resposta sobre o requisito da versão.
andol 26/07

1

Você pode tentar isso:

root@firstcomputer:./file /tmp && scp /tmp/file root@secondcomputer:./ && rm /tmp/file

Isso copiará o arquivo para o diretório / tmp no terceiro computador e, se for bem-sucedido, copiará novamente o arquivo para o computador secundário e depois se limpará. Como você está usando o operador &&, cada comando será executado apenas se o comando anterior for bem-sucedido.


Não sabia sobre o operador &&. Melhor do que usar;
27411 JorgeO

Essa é a mesma técnica que a pergunta original usada no primeiro exemplo, que estava tentando evitar (copiar do computador A para a máquina local e depois copiar o arquivo local para o computador B).
Jason C
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.