A conexão SSH provavelmente está apenas ouvindo na interface de loopback (127.0.0.1) devido à configuração GatewayPorts na configuração SSHD. Seu comando funcionará, se GatewayPorts estiver definido como sim.
netstat -an | grep LISTEN
mostrará se está ouvindo na interface pública. Você pode forçá-lo a ouvir na interface pública com
ssh -ND <ip address>:<port> <user>:<host>
mas somente se o GatewayPorts permitir que você faça isso.
GatewayPorts
Specifies whether remote hosts are allowed to connect to ports
forwarded for the client. By default, sshd binds remote port
forwardings to the loopback address. This prevents other remote
hosts from connecting to forwarded ports. GatewayPorts can be
used to specify that sshd should allow remote port forwardings to
bind to non-loopback addresses, thus allowing other hosts to con-
nect. The argument may be "no" to force remote port forwardings
to be available to the local host only, "yes" to force remote
port forwardings to bind to the wildcard address, or
"clientspecified" to allow the client to select the address to
which the forwarding is bound. The default is "no".
Meu palpite é que o GatewayPorts está definido como o padrão de não. Altere-o para yes (em /etc/ssh/sshd_config
) e, em seguida, seu comando ssh deve funcionar inalterado, mas você pode usar o endereço IP da interface para ser específico apenas no caso.
NB: Além disso, você deve verificar se não possui regras de iptables bloqueando as conexões de entrada.
Um proxy ssh funcionará, mas pode ser bem lento (sobrecarga de criptografia). Você pode querer olhar para um proxy de meias dedicado, como sSocks .