ssh-config túnel multihop [duplicado]

0

Eu tenho um servidor mysql no hostD. Posso acessar o hostD através do hostC, hostC por meio de hostB, hostB por hostA e eu acesso hostA usando putty no meu dispositivo de casa

home(windows)-->hostA-->hostB-->hostC--hostD(mySQL Server)

Meu objetivo é acessar o servidor em meu dispositivo doméstico.

Outro desafio é que eu não tenho acesso root em A, B e C. Agora eu tenho experimentado com o arquivo '.ssh / config' e é isso que eu tenho até agora:

 Host BTunnel
  HostName hostB
  LocalForward 3306 localhost:3306

 Host CTunnel
  HostName hostC
  LocalForward 3306 localhost:3306

 Host DTunnel
  HostName hostD
  LocalForward 3306 localhost:3306

Desta forma, posso ligar a partir do Putty - > hostA e digite consecutivamente:

ssh BTunnel
ssh CTunnel
ssh DTunnel

Para obter um túnel de A para D. Mas eu gostaria de ter uma solução, onde eu só digito 1 comando do host A para obter um túnel para D, talvez encadeando os aliases de host existentes.

Alguém pode oferecer uma solução?

    
por Anh Tuan 25.01.2017 / 13:33

1 resposta

0

Bem, você pode simplesmente encadear os comandos. Você pode fazer isso mesmo sem nenhum arquivo de configuração. Execute no hostA:

ssh -L 3306:localhost:3306 hostB ssh -L 3306:localhost:3306 hostC ssh -NL 3306:localhost:3306 hostD

Se você tiver configurações e chaves públicas, você pode fazer:

ssh BTunnel ssh CTunnel ssh -N DTunnel

(Eu incluiria o -N no último comando porque não preciso de acesso ao shell, apenas o encaminhamento.) Você pode criar um alias para ele em .bashrc (ou similar):

alias mytunnel="ssh BTunnel ssh CTunnel ssh -N DTunnel"

você pode começar com mytunnel agora.

    
por 25.01.2017 / 13:54