A máquina A possui um serviço (digamos, servidor web) vinculado a localhost:80. A máquina B deseja acessar este serviço, mas não tem conexão direta com a máquina A.
Quero criar um túnel ssh reverso da Máquina B para a Máquina A.
Isso funciona:
machine A> ssh -R 888:localhost:80 root@machineB
machine B> curl localhost:888
→ success
Isso não funciona muito ( 192.168.10.1
eu sou o IP da Máquina B):
machine A> ssh -R 192.168.10.1:888:localhost:80 root@machineB
machine B> curl localhost:888
→ success
machine B> curl 192.168.10.1:888 -v
* Trying 192.168.10.2:888...
* connect to 192.168.10.2 port 888 from 192.168.10.2 port 39764 failed: Connection refused
* Failed to connect to 192.168.10.2 port 888 after 0 ms: Couldn't connect to server
* Closing connection
curl: (7) Failed to connect to 192.168.10.2 port 888 after 0 ms: Couldn't connect to server
O que acontece é que localhost:888
sempre dá certo, mas tentar o mesmo no IP da NIC não funciona.
Eu verifiquei as ligações na Máquina B, a porta está escutando localhost
apenas :
machine B> ss -nltap | grep 888
LISTEN 0 0 127.0.0.1:888 0.0.0.0:* users:(("sshd",pid=3438633,fd=7))
LISTEN 0 0 [::1]:888 *:* users:(("sshd",pid=3438633,fd=5))
Isso é uma limitação da técnica ou estou faltando alguma coisa?
Pode, mas a habilidade precisa ser ativada na configuração do servidor. Com OpenSSH no servidor, você precisa habilitar
antes
sshd_config
que o servidor permita tais solicitações.