Quiero abrir una sesión de escritorio remoto desde mi computadora portátil al escritorio sobre 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 hacer ningún cambio de configuración en los enrutadores nat.
Describiré mi túnel SSH porque entender eso parece ser necesario para resolver el problema de VNC / escritorio remoto que es el corazón 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 user@middleman.com
Con respecto a esta pierna:
laptop--->nat--->middleman
Puedo conectarme a un intermediario de la siguiente manera:
me@laptop:~$ ssh -i ~/.ssh/id_rsa admin@middleman
Sin embargo, lo que realmente necesito hacer es conectarme directamente al escritorio, no al intermediario. Para hacer eso uso netcat ("nc") en el 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:
me@laptop:~/.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 solo me conecto al "escritorio" en un solo paso:
me@laptop:~$ ssh family_desktops -p 1234
(Obtuve este trabajo basado en la ayuda aquí y aquí y otras preguntas relacionadas que hice. He hecho un montón de preguntas sobre este tema porque he estado luchando con él durante muchas semanas).
Con esta conexión SSH alcanzo un shell completamente funcional en mi computadora con la etiqueta desktop
. Perfecto.
Ahora solo necesito una solución de escritorio remoto tipo VNC (o TeamViewer) sobre 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 user@middleman.com
con esa conexión establecida:
x11vnc -autoport 5901
Observo para asegurarme de que se conecta al puerto 5901, lo que hace.
laptop ---> nat ---> intermediario <- nat <- escritorio
laptop ~ / .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:
me@laptop:~$ sudo ssh family_desktops
Cliente VNC:
connect to localhost:5901
Esto da un error de "servidor no encontrado"
He intentado 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 averiguar qué hará que todo funcione.
PD Como se 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 indicar cuál es mi problema y cuál es mi solución deseada, pero algunas de mis otras preguntas todavía están abiertas. Aquí hay uno que es relevante.
desktop
está detrás de un enrutador NAT y laptop
está detrás de un enrutador NAT.