Reenvío de puertos SSH

8

Quiero conectarme a mi computadora (local) detrás de NAT a través de un servidor público accesible (público).

En local:

ssh -g -R 8000:localhost:22 user@public

Luego en público:

ssh -p 8000 user@public 

Pero me estoy poniendo error: Connection refused.

Cuando inicio sesión en el servidor público, puedo verificar que el túnel funciona:

ssh -p 8000 localhost

Que abre ssh en la computadora local.

¿Sospecho que algo está mal que el servidor público debería actuar como proxy transparente? O cómo hacer que funcione así.

mito
fuente

Respuestas:

11

El reenvío de puertos remotos SSH se vinculará por defecto a localhost / loopback por motivos de seguridad. A menudo no es preferible permitir que otros hosts accedan a sus puertos reenviados.

Para anular este comportamiento, deberá hacer dos cosas:

  • Habilite la GatewayPortsopción en el servidor.
  • Especifique una dirección de enlace, o *para enlazar a todas las direcciones, en el cliente.

    ssh -R \*:8000:localhost:22 user@public
    

Escape del asterisco para asegurarse de que su caparazón no lo expanda.

Dan Carley
fuente
0

Esto se parece más a un problema con la configuración en la computadora pública remota. Por defecto, el openssh sshd (que supongo que es el que se está usando) la configuración de GatewayPorts se convirtió en no, lo que obliga al reenvío de puerto remoto para escuchar solo en localhost.

La solución entonces sería editar su / etc / ssh / sshd_config (o equivalente), estableciendo GatewayPorts en yes o para los clientes especificados. En caso de que elija lo posterior, tendrá que cambiar su solicitud de túnel a algo como -R *: 8000: localhost: 22 en su lugar.

andol
fuente