ssh -R faz o host de destino aceitar conexão em todas as interfaces

4

Eu tenho um host SOURCE que é remoto e está por trás do NAT. Quero me conectar a SOURCE via ssh de um host TARGET que esteja em minha rede doméstica. Assim eu emito o seguinte comando em SOURCE:

ssh -R 2222:localhost:22 TARGET -N

Agora no TARGET, posso conectar-me ao SOURCE via ssh -p 2222 localhost . Bem

Com o TABLET na mesma rede do TARGET, esperaria que isso funcionasse:

ssh -p 2222 TARGET

Em vez disso, parece que o TARGET só aceita conexões na porta 2222 do host local. O seguinte está no TARGET:

user@TARGET:~/$ netstat -l | grep 2222
tcp        0      0 localhost:2222          *:*                     LISTEN     
tcp6       0      0 localhost:2222          [::]:*                  LISTEN 

Existe uma maneira de tornar o lado remoto de um ssh -R aceitar conexões de todas as suas interfaces?

    
por Jack 13.07.2017 / 10:04

1 resposta

4

Por padrão, ele escutará somente no host local (interface de loopback). Você precisa especificar o bind_address como 0.0.0.0 em seu comando:

ssh -R 0.0.0.0:2222:localhost:22 TARGET -N

Você também precisa configurar o daemon SSH no host de destino para permitir que o cliente especifique o bind_address. Por padrão, é proibido ouvir todas as interfaces. Então, você sempre encontrará escuta no loopback mesmo que você especifique 0.0.0.0 como bind_address.

Você precisa ter uma linha como a seguinte em /etc/ssh/sshd_config para permitir que o cliente especifique o endereço de vinculação.

GatewayPorts clientspecified

Quando terminar, você poderá verificar usando netstat -lntp na máquina de destino.

    
por 13.07.2017 / 10:13