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.
sittinghere
será mi máquina localhopper
será por el salto intermedio que necesito haceroverthere
será 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 overthere
al puerto local 5900 sittinghere
. Sin embargo, preferiría poder hacerlo sin vincular abiertamente un puerto hopper
ya 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
sittinghere
ejecutar:Apunte a su cliente VNC
localhost:5900
y el tráfico se canalizará aoverthere:5900
través de la conexión SSH establecida enhopper
fuente
hopper
, y luegohopper
reenvía todo el tráficooverthere:5900
. Sioverthere:5900
está escuchando0.0.0.0
o la interfaz dada, entonces funcionará, pero no si está escuchando127.0.0.1
.Terminé usando algunos
~/.ssh/config
hacks SSH para que esto suceda:Lo que esto hace es que cuando intento conectarme
ssh overthere
desdesittinghere
, se conectahopper
y 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 deoverthere
asittinghere
.fuente
apt-get install netcat-traditional -y
). Luego, debe especificar explícitamente elnc
tipo en el archivo de configuración (reemplazándolonc
connc.traditional
).Puede reenviar un puerto desde el
sittinghere
queoverthere
's puerto SSH a travéshopper
. Entonces puede usar ese puerto para llegaroverthere
directamente desdesittinghere
. En esta segunda sesión SSH, puede reenviar VNC o cualquier otro puerto que desee mientrashopper
ve solo una sesión SSH cifrada.Primera sesión SSH:
Ahora dígale al cliente SSH cómo puede llegar
overthere
agregando esta configuración a~/.ssh/config
onsittinghere
Segunda 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 conectarseoverthere
desde la línea de comandos:... pero sin el
HostKeyAlias
SSH no verificaráoverthere
la huella digital de la llave correctamente.Todas las líneas de comando deben ejecutarse desde
sittinghere
.Por cierto, creo que probablemente no necesites usar
ssh
la-t
opció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
vncviewer
desde la línea de comando, puede usar el-via
conmutador para indicarle que haga un túneluser@host
antes de conectarse al servidor VNC de otro host.Ejemplo
También puede usar
vinagre
para 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-server
un puerto personalizado (-p
conmutador) 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