Estoy buscando enrutar un puerto para VNC de regreso a mi casa aquí. Tengo que saltar sobre un único host para luego saltar a mi máquina de trabajo real.
sittinghereserá mi máquina localhopperserá por el salto intermedio que necesito haceroverthereserá la máquina de trabajo remota
Puedo hacer esto a SSH en mi máquina de trabajo:
ssh -t hopper "ssh -t overthere"
Me gustaría utilizar el reenvío de puertos para reenviar el puerto remoto 5900 overthereal puerto local 5900 sittinghere. Sin embargo, preferiría poder hacerlo sin vincular abiertamente un puerto hopperya que cualquiera en esa máquina podría conectarse a mi conexión VNC.
¿Hay alguna forma de reenviar ese puerto a mi máquina local de forma segura sin que nadie pueda acceder a él hopper?
ssh
port-forwarding
Naftuli Kay
fuente
fuente

Respuestas:
Uso de la capacidad nativa de SSH para reenviar puertos. De
sittinghereejecutar:Apunte a su cliente VNC
localhost:5900y el tráfico se canalizará aoverthere:5900través de la conexión SSH establecida enhopperfuente
hopper, y luegohopperreenvía todo el tráficooverthere:5900. Sioverthere:5900está escuchando0.0.0.0o la interfaz dada, entonces funcionará, pero no si está escuchando127.0.0.1.Terminé usando algunos
~/.ssh/confighacks SSH para que esto suceda:Lo que esto hace es que cuando intento conectarme
ssh overtheredesdesittinghere, se conectahoppery luego conecta la conexión SSH al puerto 22overthere(es decir: SSH encendidooverthere).Esto tiene algunos efectos secundarios increíbles:
Todo funciona de maravilla y, por lo que puedo decir, 5900 no está abierto
hopper, solo se reenvía directamente deoverthereasittinghere.fuente
apt-get install netcat-traditional -y). Luego, debe especificar explícitamente elnctipo en el archivo de configuración (reemplazándoloncconnc.traditional).Puede reenviar un puerto desde el
sittingherequeoverthere's puerto SSH a travéshopper. Entonces puede usar ese puerto para llegarovertheredirectamente desdesittinghere. En esta segunda sesión SSH, puede reenviar VNC o cualquier otro puerto que desee mientrashopperve solo una sesión SSH cifrada.Primera sesión SSH:
Ahora dígale al cliente SSH cómo puede llegar
overthereagregando esta configuración a~/.ssh/configonsittinghereSegunda sesión de SSH:
O simplemente una sesión SSH interactiva regular sin el túnel de puerto VNC:
Si no desea molestarse en agregar líneas
~/.ssh/config, puede decirle cómo conectarseovertheredesde la línea de comandos:... pero sin el
HostKeyAliasSSH no verificaráovertherela huella digital de la llave correctamente.Todas las líneas de comando deben ejecutarse desde
sittinghere.Por cierto, creo que probablemente no necesites usar
sshla-topción.fuente
Primero conecte la tolva mientras hace un túnel entre el trabajador y la computadora personal.
luego haga ssh ro por allí con el túnel vnc
Ahora puedes conectarte con vnc. Por cierto, cambie la configuración de vnc para escuchar localhost
fuente
Si está utilizando el cliente VNC
vncviewerdesde la línea de comando, puede usar el-viaconmutador para indicarle que haga un túneluser@hostantes de conectarse al servidor VNC de otro host.Ejemplo
También puede usar
vinagrepara conectarse a través de un túnel SSH, así a través de la GUI. Para hacerlo, configure su conexión de manera similar a través del diálogo de conexión envinagre:Lo que resultará en su conexión, tunelizada a través del host del túnel SSH.
Referencias
fuente
El siguiente comando también debería funcionar perfectamente
Se probó con parámetros adicionales para conectar el servidor PostgreSQL en
postgres-serverun puerto personalizado (-pconmutador) y también con el uso de un nombre de usuario personalizado.Como puede ver, la solución es simple y no requiere ningún cambio de configuración de ssh ni pasos intermedios.
fuente