Usando o SSH para encapsular dois saltos, o último dos quais é conectado através de um túnel ssh reverso

1

Eu gostaria de usar o OpenSSH para permitir o encaminhamento de porta em dois saltos, sendo o último salto conectado através de um túnel reverso.

Aqui está minha configuração atual:

  1. O servidor B está executando o sshd na porta 10000. O servidor C está executando o sshd na porta 20000

  2. O cliente A se conecta ao servidor B via SSH "normal"

  3. O Servidor C abre um túnel SSH reverso para o Servidor B na porta 30000

  4. O servidor B conecta-se ao servidor C por meio desse túnel reverso

O que eu quero fazer: abrir uma porta no Cliente A que encaminha as conexões do Cliente A ao Servidor B para o Servidor C (sobre o túnel SSH reverso estabelecido entre o Servidor B e o Servidor C)

Aqui estão os respectivos comandos que estou usando atualmente:

  1. O cliente A se conecta ao servidor B via SSH "normal":

     ClientAHostName $  ssh -p 10000 User@ServerBHostName
    
  2. O Servidor C abre um túnel SSH reverso para o Servidor B na porta 30000:

    ServerCHostName $  ssh -p 10000 -N -R 30000:localhost:20000 User@ServerBHostName
    
  3. O servidor B conecta-se ao servidor C através desse túnel reverso:

    ServerBHostName $  ssh -p 30000 User@localhost
    

A razão pela qual eu quero fazer isso é para que eu possa controlar certos serviços no Servidor C do Cliente A através de um navegador da Web (usando uma porta encaminhada). Devido a limitações impostas pelos ISPs do Cliente A e do Servidor C, não consigo me conectar diretamente do Servidor B (ou Cliente A) para o Servidor C ou do Servidor C para o Cliente A.

    
por user522490 28.11.2015 / 05:27

1 resposta

1

Para tornar as coisas mais simples, gosto de atribuir um número de porta ou intervalo a cada servidor. Mantendo o que você começou, B é 10000, C é 20000, esqueça os 30000.

Configuração:

A$ ssh -p 10000 -N -L 20000:localhost:20000 UserB@B
C$ ssh -p 10000 -N -R 20000:localhost:20000 UserB@B

Agora você deve ser capaz de fazer

A$ ssh -p 20000 UserC@localhost

para obter um shell em C e supondo que você deseja se conectar a um servidor da Web em execução na porta 8080 do servidor C:

A$ ssh -p 20000 -N -L 8080:localhost:8080 UserC@localhost

Conecte-se a:

http://localhost:8080/
    
por 28.11.2015 / 11:35