Localhost como ponte ssh entre dois servidores

0

Eu posso conectar via ssh a dois hosts, como host1 e host2, e preciso copiar arquivos de host1 para host2 por meio de rsync .

Eu sei que posso realizar esta primeira cópia de arquivos de host1 para localhost e depois de localhost para host2 ou realizar uma cópia simples via scp -3 <user1@host1:/file_path1> <user2@host2:/file_path2> , mas meu objetivo é testar o túnel ssh via rsync .

Alguém pode me ajudar?

Extra:

Eu li sobre o túnel ssh, mas não consigo alcançar meu objetivo ... provavelmente há algo que não entendi. Por exemplo, se eu correr

$ ssh -L 9999:host2:22 user_host1@host1

isto significa: mapear minha porta local 9999 para a porta 22 do host2 e conectar ao host1 como usuário user_host1 mas ... com este mapeamento qual é o propósito de conectar ao host1?

    
por Sim Sca 01.08.2017 / 12:44

2 respostas

0

  • Suponha que você não consiga conectar o ssh diretamente do host1 ao host2. (Caso contrário, o mais simples é o host1 de conexão direta ao host2)
  • Suponha que é impossível conectar do host1 ou host2 ao seu PC.

Próximo Comando make rsync

ssh -R 127.0.0.1:9999:host2:22 user_host1@host1   rsync -e "ssh -p 9999" /file_path1 [email protected]:/file_path2

Vamos analisá-lo:

  • ssh faz conexão com o host1
  • -R 127.0.0.1:9999:host2:22 escuta no loopback remoto (host1) na porta 9999 e encaminha a conexão no host do cliente para o host2: 22
  • na execução do rsync do host1
  • -e "ssh -p 9999" force usando a porta ssh não padrão para conexão
  • caminho local do rsync /file_path1 para o caminho remoto [email protected]:/file_path2 nós fazemos a conexão com o usuário2 @ host2, mas como endereço usamos porta de loopback mapeada anteriormente

Espero que não tenha sido digitado no comando.

UPD

Para a solução de problemas, tente conectar primeiro o ssh interativo com o túnel

$ ssh -R 127.0.0.1:9999:host2:22 user_host1@host1

e manual ssh conectar através do tunel

[user_host1@host1 ]$ ssh -p 9999 [email protected]

O tunelamento pode ser desativado na configuração do sshd no host1.

    
por 01.08.2017 / 14:07
0

Primeiramente, graças a mmv-ru : sua resposta foi um excelente ponto de partida para descobrir o que havia de errado no meu caso.

Eu escrevi uma resposta para explicar passo a passo o que fazer:

1 Loopback remoto

em um console, execute ssh -R 127.0.0.1:9999:host2:22 user_host1@host1 -N

2 Trabalhar no remoto

em outro console goto server host1 ssh user_host1@host1 e, em seguida, executar

rsync -e "ssh -p 9999" /file_path1 [email protected]:/file_path2

no meu caso, este comando falha, porque eu preciso:

1 - adicione [127.0.0.1]:9999 aos meus hosts conhecidos clicando em yes

2 - desde que eu ssh para host2 através de uma única chave, eu preciso adicionar essa chave em host1 e defini-lo 'permissões para 400.

Então meu comando é

rsync -e "ssh -p 9999 -i my_ssh_key_for_host2" /file_path1 [email protected]:/file_path2

e funciona !!!

3 TODOS EM UM

após o passo 2 (chave de criação para o host2 no host1 remoto) Eu posso realizar tudo com um comando:

ssh -R 127.0.0.1:9999:host2:22 user_host1@host1 'rsync -e "ssh -p 9999 -i my_ssh_key_for_host2" /file_path1 [email protected]:/file_path2'

Note single quote in second part!

Atenciosamente,

Sim

    
por 01.11.2017 / 16:16

Tags