Como usar o rsync com um host remoto remoto

4

Sou um usuário feliz de rsync -e ssh e 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 em que o acesso é um pouco mais complicado. Suponhamos agora que ~/folder esteja em hostB , mas hostB não esteja diretamente acessível em minha máquina, mas apenas indiretamente via hostA .

Então, se eu quiser ver apenas a pasta em hostB . Preciso primeiro ssh para hostA , depois para hostB , após o qual posso ver meus arquivos em ~/folder no host remoto.

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

Infelizmente esta é a configuração com a qual preciso trabalhar. Suponha que não há possibilidade de armazenar temporariamente os dados no próprio hostA .

    
por Bernhard 15.07.2012 / 10:46

2 respostas

8

Dê uma olhada em Como eu me conecto a um pc através de outro pc usando ssh

Você cria uma nova entrada ~/.ssh/config 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á usar Proxycommand ssh user@hostA -W %h:%p . Isso é preferível, pois não depende de nc

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

    
por 15.07.2012 / 11:20
0

Variante 1:

Primeiro, inicie o ssh no hostA permanentemente com o 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 para ~ / .ssh / config:

Host hostB
HostName localhost
Port 22022

Variante 2:

Substitua -e ssh por -e por algum script que contenha:

ssh hostA 'ssh hostB' "$@"

Eu não tentei, então alguns detalhes seriam elaborados adicionalmente.

    
por 15.07.2012 / 11:05