Como usar o rsync com um host remoto remoto

Como usar o rsync com um host remoto remoto

Sou um usuário satisfeito rsync -e sshe uso-o para sincronizar dados entre minha máquina e um host remoto usando

rsync -avz -e ssh me@hostA:~/folder ~/folder

E isso fez o que eu precisava até agora.

Agora estou trabalhando com uma configuração onde o acesso é um pouco mais complicado. Suponha que agora ~/folderesteja ativado hostB, mas hostBnão seja acessível diretamente da minha máquina, mas apenas indiretamente via hostA.

Então, se eu quiser apenas ver a pasta em hostB. Primeiro preciso fazer ssh para e hostA, em seguida hostB, posso ver meus arquivos ~/folderno host remoto.

Minha pergunta agora é: qual é o (melhor) método para usar rsyncdiretamente entre minha máquina e hostB?

Infelizmente esta é a configuração com a qual preciso trabalhar. Suponha que não haja possibilidade de armazenar temporariamente os dados sobre hostAsi mesmo.

Responder1

Dê uma olhada emComo faço para conectar a um pc através de outro pc usando ssh

Você cria uma nova ~/.ssh/configentrada com o nome tunnelb:

Host tunnelb
HostName hostB
User user
ProxyCommand ssh user@hostA nc %h %p

Se você tiver uma versão recente do ssh, poderá usá Proxycommand ssh user@hostA -W %h:%p-la. Isto é preferido porque não depende denc

Agora você pode simplesmente usar, rsync -e ssh tunnelb:~/folder ~/folderpois usará a entrada definida em ~/.ssh/config.

Responder2

Variante 1:

Primeiro, inicie o ssh no hostA permanentemente com encaminhamento de porta local em outro terminal. Por exemplo:

ssh -N -v -L 22022:hostB:22 hostA

Em seguida, "alimente" o rsync com ssh para localhost:22022. Uma variante é escrever em ~/.ssh/config:

Host hostB
HostName localhost
Port 22022

Variante 2:

Substitua -e sshpor -ealgum script que contenha:

ssh hostA 'ssh hostB' "$@"

Não tentei, então alguns detalhes seriam elaborados adicionalmente.

informação relacionada