tl; dr? Use ssh -g …
.
Eu assumo que o comando que você está usando é como
ssh -L 1234:server:5678 ssh_server
Isso escutará 127.0.0.1:1234
(IPv4) e [::1]:1234
(IPv6) no lado local. As conexões locais com qualquer um desses endereços alcançarão server:5678
do ssh_server
. Outros computadores em sua rede local não podem alcançar o túnel porque 127.0.0.1
e [::1]
são endereços de loopback; para qualquer máquina, elas significam a própria máquina.
Para disponibilizar seu túnel para outros computadores, vincule-o a um endereço que ele possa alcançar. Digamos que 192.168.0.14
seja um endereço válido do cliente que executa ssh
; ligar a ele:
ssh -L 192.168.0.14:1234:server:5678 ssh_server
ou para todos os endereços disponíveis (escolha um comando):
ssh -L 0.0.0.0:1234:server:5678 ssh_server # IPv4
ssh -L [::]:1234:server:5678 ssh_server # IPv6
ssh -L 0.0.0.0:1234:server:5678 -L [::]:1234:server:5678 ssh_server # IPv4 and IPv6
O último túnel "aberto" também pode ser criado com -g
. De man 1 ssh
:
-g
Allows remote hosts to connect to local forwarded ports.
-g
é equivalente a -o GatewayPorts=yes
e a GatewayPorts yes
configurada no arquivo ssh_config
. Este trecho de man 5 ssh_config
explica ainda melhor:
GatewayPorts
Specifies whether remote hosts are allowed to connect to local forwarded ports. By default,ssh(1)
binds local port forwardings to the loopback address. This prevents other remote hosts from connecting to forwarded ports. GatewayPorts can be used to specify thatssh
should bind local port forwardings to the wildcard address, thus allowing remote hosts to connect to forwarded ports. The argument must beyes
orno
. The default isno
.
Então:
ssh -g -L 1234:server:5678 ssh_server
Notas:
- Não se esqueça de abrir a porta escolhida no seu firewall.
- Você pode encontrar
autossh
útil… - … juntamente com a opção
ExitOnForwardFailure
dessh
(explicada emman 5 ssh_config
). - Em geral, um servidor HTTP pode rejeitar URLs que não considera como próprios. Você disse que
localhost:port
funciona no seu navegador. Caso URLs comohttp://192.168.0.14:1234
não funcionem apesar do túnel, verifique a configuração do servidor.
Recursos adicionais: