Différences entre VNC et ssh -X

27

Pourquoi voudriez-vous utiliser VNC (ou d'ailleurs NX) au lieu de simplement utiliser ssh -X (-Y). J'ai lu que VNC utilise moins de bande passante, mais y a-t-il d'autres différences / avantages avec l'outil respectif?

Le batelier silencieux
la source

Réponses:

30

Mis à part les problèmes de bande passante et de latence (qui peuvent varier un peu), les grandes différences sont les fonctionnalités qu'il offre.

VNC exporte une session entière, le bureau et tout, tandis que ssh exécutera un seul programme et affichera ses fenêtres sur votre poste de travail.

Le serveur VNC exporte une session qui survit même lorsque vous déconnectez votre écran, et vous pouvez vous reconnecter plus tard avec toutes les fenêtres ouvertes, etc. Cela n'est pas possible avec un tunnel ssh X, car lorsque votre serveur X meurt, les fenêtres disparaissent .

dkagedal
la source
5
C'est la principale raison pour laquelle j'utilise toujours VNC, jamais de fenêtre X directe. (J'utilise VNC sur un tunnel ssh). Lorsque je ferme le couvercle de mon ordinateur portable, la connexion est rompue. Avec ssh -X, il n'y a aucun moyen de reprendre - je dois redémarrer l'application depuis le début. Avec VNC (à la fois direct et sur un tunnel ssh), je peux me reconnecter et continuer là où je m'étais arrêté.
David Cary
8
Bien qu'un peu OT (puisque ce Q ne concerne vraisemblablement que les applications GUI): si une application GUI réelle n'est pas requise, et qu'un accès shell de base suffira (par exemple, xterm), alors faites "ssh" suivi de "screen bash". S'il est déconnecté (ordinateur portable fermé, vpn déconnecté, etc.), le shell distant reste actif. Reconnectez-vous et reconnectez-vous via "screen -r". Je soulève seulement cela depuis que j'ai vu des gens exécuter vnc juste pour un accès shell de base (ou exécuter un xterm distant affiché localement); la plupart du temps (mais bien sûr pas toujours), un simple accès shell suffit.
michael
1
@michael_n Je suis intéressé par ce que vous dites sur le bash d'écran, mais je ne suis pas en mesure de le faire fonctionner. J'ai tapé 'ssh -X -t myusername @ remotehost screen bash' et après la chute de la connexion, je tape 'screen -r', mais il dit 'il n'y a pas d'écran à reprendre'. que devrais-je faire?
simona
2
@simona après le succès de connexion ssh, puis exécutez écran: ssh user@host; et après identifié: screen bash; pour vous déconnecter, ctrl+asuivi de ctrl+d. Vous pouvez vous déconnecter et vous reconnecter, puis: screen -lset screen -r. Quitter bash ferme la session d'écran. Pour plus (beaucoup plus), voir divers tutoriels sur l' écran GNU
michael
9

ssh -Xredirige les commandes X11 vers votre serveur X local. C'est comme si vous exécutiez le programme localement, alors qu'il s'exécute vraiment sur l'ordinateur à l'autre bout. C'est très lent car il utilise beaucoup de bande passante. (C'est ce dont les gens parlent quand ils disent que X11 est "transparent au réseau".)

VNC et d'autres applications de bureau à distance permettent à l'autre ordinateur de traiter tous les dessins graphiques et ainsi de suite et capture, en substance, une capture d'écran et la renvoie à votre ordinateur. Cela peut sembler beaucoup plus rapide, car beaucoup moins d'informations sont nécessaires pour tout afficher. Cependant, il envoie également l'ensemble du bureau, plutôt qu'une seule application.

Je ne recommande pas d' utiliser ssh -Xsur Internet pour une raison simple: Il va utiliser toute votre bande passante disponible. C'est assez utile sur un LAN, à mon avis, donc si vous n'avez besoin que d'une application et que vous ne voulez pas avoir à exécuter un bureau entier, c'est une bonne façon de procéder. Sinon, utilisez simplement VNC.

gris-fondu
la source
3
"C'est très lent car il utilise une grande bande passante. Le protocole X11 est très complexe et implique souvent l'envoi de grandes pixmaps d'avant en arrière via la connexion." - c'est faux, le protocole X11 n'est pas très complexe et n'implique pas l'envoi de grandes pixmaps d'avant en arrière via la connexion. Venez rejoindre cette proposition pour en savoir plus sur le système X Window: area51.stackexchange.com/proposals/20129/the-x-window-system
1
@Sherlock: Eh bien, le fait demeure qu'il utilise beaucoup de bande passante. J'ai supprimé la phrase incriminée.
greyfade
1
NX est un moyen efficace de transmettre des données de protocole X11 sur le réseau. Il compresse les données, fournit des sessions de mise en cache et de tunnels étendues via SSH.
Adam Byrtek
4

VNC partagera un bureau entier à partir d'un système distant. Il nécessite un bureau à part entière sur le système distant.

ssh -X vous permet d'exécuter une seule application X à partir d'un serveur distant. Le système distant n'a pas besoin d'exécuter un bureau complet et vous n'avez souvent besoin que d'une poignée de packages à installer sur le système distant.

ssh -Xpeut être utile lors de l'installation de progiciels complexes sur une connexion à distance. Certains produits logiciels peuvent utiliser un programme d'installation graphique (Oracle Database, etc.). Je ne veux pas installer un bureau Gnome à part entière sur mon serveur distant. Ainsi, vous installez un ou deux packages X11 (Xauth?) Sur le serveur distant et autorisez le DBA à exécuter le programme d'installation Oracle à distance en utilisant quelque chose de simple comme 'ssh -X / media / cdrom / oracle-installer'.

Stefan Lasiewski
la source