Sou um usuário satisfeito 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 onde o acesso é um pouco mais complicado. Suponha que agora ~/folder
esteja ativado hostB
, mas hostB
nã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 ~/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 haja possibilidade de armazenar temporariamente os dados sobre hostA
si 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/config
entrada 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 ~/folder
pois 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 ssh
por -e
algum script que contenha:
ssh hostA 'ssh hostB' "$@"
Não tentei, então alguns detalhes seriam elaborados adicionalmente.