reverse ssh tunnel escuta na interface errada

4

Estou trabalhando com um servidor que está protegido por um firewall. Eu estabeleci um túnel ssh para um servidor intermediário na internet assim:

remoteuser@behind_fw$ ssh -N -f -R 10002:localhost:22 middleuser@middle

Mas não consigo me conectar diretamente através deste servidor, isso não funciona:

user@local$ ssh remoteuser@middle -p 10002

Eu tenho que conectar em duas etapas:

user@local$ ssh middleuser@middle
middleuser@middle$ ssh remoteuser@localhost -p 10002

Saída de netstat -l no meio:

tcp        0      0 localhost:10002         *:*                     LISTEN

mas deve ser algo assim:

tcp        0      0 *:10002                 *:*                     LISTEN

como posso conseguir isso?

    
por jigfox 06.05.2010 / 22:10

2 respostas

9

Sendo este um túnel aberto em um servidor remoto, esse servidor precisa ter GatewayPorts configurado como yes em seu / etc / ssh / sshd_config.

Dependendo do tipo de usuário que o servidor deseja, use a opção Corresponder para limitar esse recurso ao usuário.

Match User middleuser
  GatewayPorts yes

Observe que você provavelmente deseja adicionar este bloco Match no final do seu sshd_config, já que um bloco Match continua até que outro comece, ou o arquivo termina.

Dito isso, que tal experimentar o que eu consideraria uma solução um pouco mais limpa?

user@local$ ssh -N -f -L 10002:behind_fw:22 middleuser@middle
user@local$ ssh remoteuser@localhost -p 10002
    
por 06.05.2010 / 23:40
3

Supondo que você esteja usando o OpenSSH, é necessário especificar o endereço de ligação. Tente algo como:

ssh -N -f -R *:10002:localhost:22 middleuser@middle

ou

ssh -N -f -R :10002:localhost:22 middleuser@middle

A assinatura para -R é:

-R [bind_address:]port:host:hostport

no OpenSSH. Por motivos de segurança, o padrão é localhost se você não especificar. Talvez seja necessário alterar o GatewayPorts para que ele funcione, dependendo da sua configuração. Veja SSH (1) para mais informações.

    
por 06.05.2010 / 23:08