El comando para reenviar el puerto 80 desde su máquina local ( localhost
) al host remoto en el puerto 8000 es:
ssh -R 8000:localhost:80 oli@remote-machine
Esto requiere un ajuste adicional en el servidor SSH, agregue las líneas a /etc/ssh/sshd_config
:
Match User oli
GatewayPorts yes
A continuación, vuelva a cargar la configuración ejecutando el servidor sudo reload ssh
.
La configuración GatewayPorts yes
hace que SSH enlace el puerto 8000 en la dirección comodín, por lo que estará disponible para la dirección pública de remote-machine
( remote-machine:8000
).
Si necesita tener la opción de no vincular todo en la dirección comodín, cambie GatewayPorts yes
a GatewayPorts clientspecified
. Debido a que se ssh
vincula a la dirección de bucle de retorno de forma predeterminada, debe especificar un vacío bind_address
para vincular la dirección comodín:
ssh -R :8000:localhost:80 oli@remote-machine
El :
antes 8000
es obligatorio si GatewayPorts
está configurado en clientspecified
y desea permitir el acceso público a remote-machine:8000
.
Extractos manuales relevantes:
ssh (1)
-R [bind_address:] port: host: hostport
Especifica que el puerto dado en el host remoto (servidor) se debe reenviar al host y puerto dados en el lado local. Esto funciona mediante la asignación de un socket para escuchar el puerto en el lado remoto, y cada vez que se realiza una conexión a este puerto, la conexión se reenvía a través del canal seguro, y se realiza una conexión al puerto host del puerto host desde la máquina local. Por defecto, el socket de escucha en el servidor estará vinculado únicamente a la interfaz de bucle invertido. Esto puede anularse especificando un bind_address. Un bind_address vacío, o la dirección '*', indica que el socket remoto debe escuchar en todas las interfaces. La especificación de una dirección de enlace remota solo tendrá éxito si la opción GatewayPorts del servidor está habilitada (consulte sshd_config (5)).
sshd_config (5)
GatewayPorts
Especifica si los hosts remotos pueden conectarse a los puertos reenviados para el cliente. GatewayPorts se puede usar para especificar que sshd debe permitir que los reenvíos de puertos remotos se unan a direcciones que no son de bucle invertido, permitiendo así que otros hosts se conecten. El argumento puede ser 'no' para forzar que los reenvíos de puertos remotos estén disponibles solo para el host local, 'sí' para forzar los reenvíos de puertos remotos para que se unan a la dirección comodín, o 'clientes especificados' para permitir que el cliente seleccione la dirección a la que el reenvío está obligado. El valor predeterminado es 'no'.
Ver también:
GatewayPorts
fue la bala mágica aquí. Me gusta que hayas encontrado una versión que me permita limitar esta técnica bastante poderosa a ciertos usuarios.ssh
comando. Configura si otros clientes pueden comunicarse con los puertos reenviados en el servidor.-R :8000:127.0.1.1:80
(o cualquier otra127.x.x.x
dirección). De lo contrario, no, no podrá aprender la dirección IP remota.Si el servidor lo ha hecho
GatewayPorts no
, puede lograr el mismo resultado ejecutandossh -g -L 8001:localhost:8000 oli@remote-machine
en el servidor una vez que haya ejecutado elssh -R
comando en el cliente. Esto hará que el puerto de bucle invertido 8000 en el servidor sea accesible en todas las interfaces en el puerto 8001.fuente