Diferencias entre VNC y ssh -X

27

¿Por qué usarías VNC (o, para el caso, NX) en lugar de solo usarlo ssh -X (-Y)? Leí que VNC usa menos ancho de banda, pero ¿hay alguna otra diferencia / ventaja con la herramienta respectiva?

El barquero silencioso
fuente

Respuestas:

30

Además de los problemas de ancho de banda y latencia (que pueden variar un poco), las grandes diferencias son la funcionalidad que proporciona.

VNC exporta una sesión completa, escritorio y todo, mientras que ssh ejecutará un solo programa y mostrará sus ventanas en su estación de trabajo.

El servidor VNC exporta una sesión que sobrevive incluso cuando desconecta su pantalla, y puede volver a conectarse a ella más tarde con todas las ventanas abiertas, etc. Esto no es posible con un túnel X ssh, ya que cuando su servidor X muere, las ventanas desaparecen .

dkagedal
fuente
55
Esa es la razón principal por la que siempre uso VNC, nunca dirijo X window. (Yo uso VNC sobre un túnel ssh). Cuando cierro la tapa de mi computadora portátil, la conexión se rompe. Con ssh -X, no hay forma de reanudar; tengo que reiniciar la aplicación desde el principio. Con VNC (directo y sobre un túnel ssh), puedo volver a conectar y continuar justo donde lo dejé.
David Cary
8
Aunque un poco OT (dado que esta Q probablemente solo se trata de aplicaciones GUI): si no se requiere una aplicación GUI real, y solo funcionará el acceso básico de shell (por ejemplo, xterm), entonces haga "ssh" seguido de "screen bash". Si se desconecta (computadora portátil cerrada, vpn desconectada, etc.), el shell remoto permanece activo. Vuelva a iniciar sesión y vuelva a conectarse a través de "screen -r". Solo menciono esto desde que he visto a personas ejecutar vnc solo para acceso básico de shell (o ejecutar un xterm remoto que se muestra localmente); la mayoría de las veces (pero, por supuesto, no siempre), un simple acceso a la shell será suficiente
michael
1
@michael_n Estoy interesado en lo que dices sobre screen bash, pero no puedo hacer que funcione. Escribí 'ssh -X -t myusername @ remotehost screen bash' y después de que la conexión se cae escribí 'screen -r', pero dice 'no hay pantalla que se pueda reanudar'. ¿Qué tengo que hacer?
simona
2
@simona después del inicio de sesión ssh, a continuación, ejecutar la pantalla: ssh user@host; y después de la conexión: screen bash; desconectar, ctrl+aseguido de ctrl+d. Puede cerrar sesión e iniciar sesión nuevamente, luego: screen -lsy screen -r. Salir de bash sale de la sesión de pantalla. Para más (mucho más), vea varios tutoriales en la pantalla de GNU
michael
9

ssh -Xredirige los comandos X11 a su servidor X local. Entonces, es como si estuviera ejecutando el programa localmente, cuando realmente se está ejecutando en la computadora en el otro extremo. Sus muy lento porque usa una gran cantidad de ancho de banda. (De esto es de lo que habla la gente cuando dicen que X11 es "red transparente").

En cambio, VNC y otras aplicaciones de escritorio remotas permiten que la otra computadora procese todos los dibujos gráficos, etc., y capture, en esencia, una captura de pantalla y la envíe de vuelta a su computadora. Puede parecer mucho más rápido, porque se requiere mucha menos información para mostrar todo. Sin embargo, también envía todo el escritorio, en lugar de una sola aplicación.

No recomiendo el uso ssh -Xa través de Internet por una simple razón: Se va a utilizar todo su ancho de banda disponible. Es bastante útil en una LAN, en mi opinión, por lo que si solo necesita una aplicación y no desea tener que ejecutar un escritorio completo, esta es una buena manera de hacerlo. De lo contrario, solo use VNC.

Greyfade
fuente
3
"Es muy lento porque utiliza una gran cantidad de ancho de banda. El protocolo X11 es muy complejo y a menudo implica enviar grandes mapas de píxeles de un lado a otro a través de la conexión". - Esto está mal, el protocolo X11 no es muy complejo y no implica el envío de grandes mapas de píxeles de ida y vuelta a través de la conexión. Ven y únete a esta propuesta para obtener más información sobre el sistema X Window: area51.stackexchange.com/proposals/20129/the-x-window-system
1
@ Sherlock: Bueno, el hecho es que usa mucho ancho de banda. Eliminé la oración ofensiva.
greyfade
1
NX es una forma eficiente de transmitir datos del protocolo X11 a través de la red. Comprime los datos, proporciona extensas sesiones de almacenamiento en caché y túneles sobre SSH.
Adam Byrtek
4

VNC compartirá un escritorio completo desde un sistema remoto. Requiere un escritorio completo en el sistema remoto.

ssh -X le permite ejecutar una sola aplicación X desde un servidor remoto. El sistema remoto no necesita ejecutar un escritorio completo y, a menudo, solo necesita instalar un puñado de paquetes en el sistema remoto.

ssh -Xpuede ser útil al instalar paquetes de software complejos a través de una conexión remota. Algunos productos de software pueden usar un instalador de GUI (Oracle Database, etc.). No quiero instalar un escritorio Gnome completo en mi servidor remoto. Por lo tanto, instala uno o dos paquetes X11 (Xauth?) En el servidor remoto y permite que el DBA ejecute el instalador de Oracle de forma remota utilizando algo simple como 'ssh -X / media / cdrom / oracle-installer'.

Stefan Lasiewski
fuente