SCP entre duas redes

SCP entre duas redes

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, 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 forma:

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

A resposta ao erro é

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

Sei que provavelmente é porque o primeiro computador não consegue ver o segundo computador. É possível dar ao SCP um parâmetro que trate do 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 primeiro e o segundo estão rodando Debian.

Responder1

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 isto no seu computador local:

ssh -fNL 12345:remote:22 gatewaylogin@gateway

Então você pode executar uma quantidade ilimitada de comandos SCP neste túnel (ainda digitando no seu 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 é adequado se a rede remota for segura, mas se não for segura, você precisará estabelecer um túnel entre o local e o gateway e outro túnel entre o gateway e o remoto, ligando os dois por um número de porta comum.

Responder2

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.

Responder3

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, em seguida, limpará a si mesmo. Como você está usando o operador &&, cada comando só será executado se o comando anterior for bem-sucedido.

informação relacionada