Quiero abrir una sesión de escritorio remoto desde mi computadora portátil al escritorio a través de mi túnel SSH (inverso). Eso debería ser simple (o al menos factible), ¿verdad? Hasta ahora he estado usando Team Viewer para iniciar sesión en el escritorio remoto. Me gustaría lograr resultados similares sin Team Viewer.
Así es como se ve mi túnel SSH:
laptop--->nat--->middleman<--nat<--desktop
Todas las máquinas ejecutan Linux (principalmente Kubuntu 12.04 u OpenSuse 12.3). No puedo cambiar ningún puerto ni realizar ningún cambio de configuración en los enrutadores nat.
Describiré mi túnel SSH porque comprenderlo parece ser necesario para resolver el problema de VNC/escritorio remoto que es el núcleo de mi pregunta. Con respecto a esta pierna:
middleman<--nat<--desktop
…así es como se establece:
autossh -M 5234 -N -f -R 1234:localhost:22 [email protected]
Con respecto a esta pierna:
laptop--->nat--->middleman
Puedo conectarme al intermediario de la siguiente manera:
[email protected]:~$ ssh -i ~/.ssh/id_rsa [email protected]
Sin embargo, lo que realmente necesito hacer es conectarme directamente al escritorio, no al intermediario. Para hacer eso, uso netcat ("nc") en intermediario. En base a esto, parece que se requiere nc. Así que edito mi archivo de configuración SSH en la computadora portátil para usar ProxyCommand y nc:
[email protected]:~/.ssh$ nano config
Los contenidos son:
Host family_desktops
ProxyCommand ssh middleman_fqdn nc localhost %p
User admin
PasswordAuthentication no
IdentityFile ~/.ssh/my_id_rsa
Donde middleman_fqdn
es como "middleman.com"
Luego simplemente me conecto al "escritorio" en un solo paso:
[email protected]:~$ ssh family_desktops -p 1234
(Conseguí que esto funcionara en base a la ayuda aquí y aquí y otras preguntas relacionadas que hice. He hecho un montón de preguntas sobre este tema porque he estado lidiando con él durante muchas semanas).
Con esta conexión SSH llego a un shell completamente funcional en mi computadora llamado desktop
. Perfecto.
Ahora solo necesito una solución de escritorio remoto similar a VNC (o similar a TeamViewer) a través de este túnel SSH. ¿Cómo?
Esto es lo que he intentado hasta ahora:
intermediario<–nat<–escritorio
autossh -M 5235 -N -f -R 1235:localhost:5901 [email protected]
con esa conexión establecida:
x11vnc -autoport 5901
Observo para asegurarme de que se conecta al puerto 5901, y lo hace.
laptop—>nat—>intermediario<–nat<–desktop
portátil ~/.ssh/config:
Host family_desktops
ProxyCommand ssh -NL 5901:localhost:1235 middleman.com nc localhost 1235
User admin
PasswordAuthentication no
IdentityFile ~/.ssh/my_id_rsa
Configuración del túnel:
[email protected]:~$ sudo ssh family_desktops
Cliente VNC:
connect to localhost:5901
Esto da un error de "servidor no encontrado"
He probado una serie de variaciones en ProxyCommand, ninguna de ellas exitosa. Obviamente, estoy adivinando qué parámetros deberían estar en ProxyCommand y cuáles deberían estar en la línea de comando ssh. Puedo ver algunos problemas potenciales con mi configuración, pero no he podido descubrir qué hará que todo funcione.
Relacionado:¿Eliminar todos los trabajos en segundo plano?PD Como mencioné, he hecho varias preguntas sobre esto. Algunos de ellos me llevaron más cerca de la solución y forman la base de mi pregunta actual. Otras de mis preguntas anteriores sobre este tema solo muestran mi ignorancia e incapacidad para hacer la pregunta en la forma correcta. En este punto, esta pregunta actual representa mi mejor capacidad para establecer cuál es mi problema y cuál es la solución que deseo, pero algunas de mis otras preguntas también están abiertas. Aquí hay uno que es relevante.
Respuesta aceptada:
¿Puedes intentar hacer el segundo paso sin hacer el nc? Es decir, haz el VNC con solo -L y -R. Creo que el problema es que su sesión de netcat se está conectando nuevamente a una ya abierta. Entonces, cuando haga las cosas de VNC, no use netcat.