A resposta do ProxyCommand da Grawity funcionou para mim, mas como eu estou menos familiarizado com o SSH, foi preciso experimentar. Eu pensei que apenas explicaria a resposta de Grawity com mais detalhes para ajudar outros novatos no SSH como eu. Aqui estão as definições para uma notação mais explícita:
Máquina A: a máquina em que você está
Servidor B: userB@ip.address.for.B (o host de salto ou o servidor intermediário)
Servidor C: userC@ip.address.for.C (o servidor remoto para o qual você deseja copiar)
ProxyCommnad
A$ scp -oProxyCommand="ssh -W %h:%p userB@ip.address.for.B" thefile userC@ip.address.for.C:destination
Exemplo concreto
Portanto, para um exemplo concreto, digamos que você tenha acesso a um servidor com IP 0.0.1.2
com uma conta de usuário chamada bar
(Servidor C). Mas, para isso, você deve primeiro fazer login em um servidor com IP 0.0.1.1
com a conta de usuário chamada foo
(Servidor B). Agora você deseja copiar o arquivo baz.txt
localizado na sua máquina atual (Máquina A) para 0.0.1.2
o /home/bar/
diretório do servidor . Para usar o ProxyCommand acima para este exemplo, você deve executar o seguinte:
A$ scp -oProxyCommand="ssh -W %h:%p foo@0.0.1.1" baz.txt bar@0.0.1.2:/home/bar/
Você também pode copiar com facilidade o arquivo do Servidor C, alternando a ordem e o destino do arquivo. Assim, por exemplo, se baz.txt
já estava no servidor 0.0.1.2
localizado na /home/bar/
, então você pode copiá-lo para a sua máquina usando:
A$ scp -oProxyCommand="ssh -W %h:%p foo@0.0.1.1" bar@0.0.1.2:/home/bar/baz.txt /destination/path/on/A
Espero que isso ajude as pessoas que precisam de coisas explicadas um pouco mais do que outras.
A$ rsync <options> -e 'ssh B ssh' source C:destination