Accéder à distance à sa machine (VNC+ssh)

Dernière mise à jour le 3 novembre 2009 à 16:02 par marlalapocket
Publié par sebsauvage
L'astuce suivante vous permettra d'accéder à distance à votre machine de manière graphique.
Nous allons utiliser le serveur VNC inclu dans Ubuntu (Vino) en le sécurisant par ssh.

Vous pourrez alors accéder à distance à votre PC avec ssh et vnc (Par exemple sous Windows en emportant putty et tvncviewer sur clé USB).

L'avantage d'utiliser VNC à travers ssh est que les communications sont chiffrées, et l'authentification est faite par ssh (et non par VNC).
(En effet, le protocole d'authentification de VNC est faible est il est possible de "sniffer" les informations de connexion. VNC ne devrait jamais être utilisé tel quel sur internet.)



Configuration sur le serveur (machine qui sera accédée à distance)


1) Installez le serveur ssh


sudo apt-get install openssh-server

2) Changez le port par défaut du serveur ssh


(Cela réduit les risques d'attaques)
Modifiez le fichier /etc/ssh/sshd_config

Changez: Port 22
par: Port 11122

Changez: PermitRootLogin yes
Par: PermitRootLogin no

(Vous pouvez bien entendu utiliser le port de votre choix.)

Redémarrez ensuite le serveur ssh:
sudo /etc/init.d/ssh restart

3) Configurez Vino


Lancez gconf-editor et modifiez les valeurs suivantes:

  • authentication_methods: none
  • enabled: cocher
  • network_interfaces: lo (IMPORTANT!)
  • prompt_enabled : décocher


Ainsi, on peut se connecter sur le serveur VNC directement sans mot de passe, mais uniquement localement (à partir de la machine elle-même).
(Avec network_interfaces=lo, il est impossible de se connecter à distance au serveur VNC.)

4) Configurez votre session


Note: le serveur Vino ne démarrera que pour votre utilisateur.
Il faut donc qu'une session soit préalablement ouverte pour pouvoir vous connecter à distance.
Vous pouvez activer le login automatique: Menu Système > Administration > Fenêtre de connexion



Cochez "Activer la connexion différée" et choisissez votre utilisateur.



Ainsi même si vous redémarrez à distance l'ordinateur, vous pourrez à nouveau vous connecter dessus.

5) Firewall


Si vous avez un firewall, pensez à ouvrir le port que vous avez choisi pour votre serveur ssh (11122 dans notre exemple).
Il est inutile (et déconseillé) d'ouvrir le port spécifique à VNC (5900).

Configuration sur le client


Essayons maintenant de nous connecter dessus. Nous allons prendre pour exemple un client sous Windows.
Il suffit de prendre Putty (comme client ssh) et tvncviewer (comme client VNC).

Ces deux logiciels ne nécessitent pas d'installation et peuvent être emportés sur clé USB.

Note: Nous utilisons le client TightVNC et non simplement VNC, car il supporte de meilleurs algorithmes de compression (JPEG, etc) supportés par le serveur Vino (comme la compression JPEG).

Configurer Putty


Configurez votre connexion Putty: Entrez l'adresse IP de votre machine, le port:



Ajoutez ensuite un tunnel: port local 5900 vers port 5900 de votre machine:

  • Source port: 5900
  • Destination: localhost:5900
  • Cliquez sur le bouton "Add"




Et n'oubliez pas de sauvegardez ces paramètres (entrez un nom et cliquez sur "Save"):



Vous n'aurez plus à refaire cette manipulation.

Connexion à distance


Lancez Putty et double-cliquez sur votre session ("mon ordinateur" dans notre exemple):



Entrez login et mot de passe de votre utilisateur.



Vous pouvez maintenant lancer VNC et vous connecter sur localhost



Et voilà, vous avez accès à votre bureau.



VNC n'est pas très rapide, mais c'est bien pratique de pouvoir accéder à distance à sa machine.

Notes


Sécurité:Cette méthode introduit 3 risques potentiels:
  • Serveur ssh ouvert: Il est impératif de choisir un mot de passe difficile à deviner (plus de 8 caractères (lettres, chiffres, symboles)).
  • Serveur VNC ouvert en local: Toute personne qui a un accès local à la machine peut se connecter sur le serveur VNC (pas de mot de passe). (La connexion à distance sur le serveur VNC reste impossible).
  • Le login automatique permet à une autre personne d'utiliser votre compte sans le mot de passe, du moment qu'elle a un accès physique à l'ordinateur.


En conséquence, cette méthode ne devrait être mise en œuvre que si:
  • Le PC n'est physiquement accessible que de vous-même.
  • Si vous êtes l'unique utilisateur(trice) de l'ordinateur (ou si vous faites totalement confiance aux autres utilisateurs).


En outre, il est fortement recommandé d'installer un firewall. Sous Ubuntu 8.10 et suivants, vous pouvez installer gufw et autoriser uniquement en entrée le port de votre serveur ssh (11122 dans notre exemple).

Pour vous connecter sur votre PC, vous devez connaître son adresse IP.
Si elle change trop souvent, vous pouvez installer un client dyndns.

Astuces


Configurer Vino en ligne de commande


Pratique à travers une session ssh sans X11:

sudo su utilisateur
gconftool-2 --type list --list-type string /desktop/gnome/remote_access/authentication_methods --set "[none]"
gconftool-2 --type string /desktop/gnome/remote_access/network_interface --set "lo"
gconftool-2 --type bool /desktop/gnome/remote_access/prompt_enabled --set false
gconftool-2 --type bool /desktop/gnome/remote_access/enabled --set true


Notez que ces modifications ne seront prises en compte que lors du prochain login de l'utilisateur.
(Si l'utilisateur est déjà connecté, cela ne démarrera pas le serveur Vino).

Pour forcer l'utilisateur à se déconnecter (et donc forcer le démarrage de Vino), faites:
sudo /etc/init.d/gdm restart

Activer le login automatique


Modifiez le fichier /etc/gdm/gdm.conf

Repérez les lignes:
TimedLoginEnable=false
TimedLogin=
TimedLoginDelay=30


Remplacez par:
TimedLoginEnable=true
TimedLogin=pierre
TimedLoginDelay=30


puis forcez le redémarrage de session:
sudo /etc/init.d/gdm restart

(cela va déconnecter l'utilisateur s'il était connecté.)

Vous devriez maintenant voir le serveur Vino:


Vous pouvez remarquer que Vino n'est en écoute que sur les interfaces locales (127.0.0.1 (ipv4) et ::1 (ipv6)): Il n'est donc pas possible de se connecter sur votre Vino à distance, même si votre firewall est désactivé.
C'est une sécurité.
Meilleures réponses pour « Accéder à distance à sa machine (VNC+ssh) » dans :
Accéder à distance à sa machine (VNC+ssh) Voir L'astuce suivante vous permettra d'accéder à distance à votre machine de manière graphique. Nous allons utiliser le serveur VNC inclu dans Ubuntu (Vino) en le sécurisant par ssh. Vous pourrez alors accéder à distance à votre PC avec ssh et vnc...
Se logguer à distance avec ssh (Linux) Voir(Pour ceux qui voudraient avoir un rappel sur SSH) Les commandes suivantes nécessitent d'avoir un compte sur la machine sur laquelle on veut se connecter et qu'un serveur SSH y soit installé. Sous Linux, la syntaxe est simple (le client...
[VNC] Se faire aider à distance VoirVNC Le logiciel VNC (Virtual Network Computing) vous permettra de vous faire aider à distance sur votre machine. Démarrez le serveur, convenez d'un mot de passe avec la personne qui a accepté de vous aider, et donnez-lui votre adresse IP. Elle...
Se logguer à distance avec ssh ( Windows ) Voir( Pour ceux qui voudraient avoir un rappel sur ssh ) Contrairement à la plupart des distributions Linux, Windows ne possède pas de client ssh en natif. Il faut donc en installer un. Pour cela plusieurs solutions : Vous pourrez en...
Télécharger Tight VNC VoirVNC (Virtual Network Computing) est une application client/serveur permettant d'accéder graphiquement à une machine distante à travers les réseaux, quelle que soit son système d'exploitation. Grâce à VNC, il est possible d'accéder à une machine de...
Télécharger Real VNC VoirRealVNC est un client VNC (virtual network computing) permettant de prendre la main à distance sur des ordinateurs, pour peu qu'un serveur VNC soit lancé sur les machines distantes. La présente version de VNC est une version gratuite mais limitée....