Contrôle d’ordinateur à distance

6 05 2009

Voici une façon simple (enfin, j’espère) pour prendre le contrôle d’un ordinateur en mode graphique sous Ubuntu depuis un autre Ubuntu (c’est ma distribution, il n’y a pas de raison que cela ne puisse se faire sous une autre).

Sécurité ? Aucun problème puisque le tout passe par une connexion ssh. Il est également possible d’installer des outils tels que fail2ban pour protéger encore plus le port ssh laissé ouvert.

Cette solution permet de prendre le contrôle d’une machine en passant par une connexion xDSL classique, une bande passante montante (upload) de 1 Mbit/s est suffisante pour obtenir un bon niveau de réactivité. Celle-ci peut encore être améliorée en désactivant tous les effets visuels sur la machine distante.

Vous pouvez désormais faire de la télémaintenance !

Pré-requis

Ordinateur distant :

  • Disposer d’une connexion ssh sur l’ordinateur distant (le paquet openssh-server doit être installé et configuré correctement).
  • Le paquet x11vnc doit être installé (sudo apt-get install x11vnc)

Ordinateur local :

  • Le paquet xtightvncviewer doit être installé (sudo apt-get install xtightvncviewer)

Lignes de commande

Ouvrir 2 fenêtres terminal, dans la première taper (remplacer user@example.com avec l’identifiant utilisateur et l’hôte distant) :

ssh -t -L 5900:localhost:5900 user@example.com \
    'x11vnc -localhost -ncache 10 -display :0'

Dans la seconde fenêtre taper :

xtightvncviewer -encodings 'copyrect tight zrle hextile' \
                localhost:0

Note : Chaque commande doit être tapée en une seule ligne, la présentation sur 2 lignes n’est que pure mise en page.

Explications

Commande ssh :

  • -t : permet d’exécuter une commande sur l’ordinateur distant et d’avoir la sortie standard affichée en locale.
  • -L 5900:localhost:5900 : redirige toutes les connexions locales au port 5900 vers le port 5900 de l’ordinateur distant (5900=premier port utilisé par VNC). Il s’agit d’un tunnel ssh. Pour plus d’infos, vous pouvez consulter la page Tunnel ssh : ssh -L (local) et ssh -R (remote) en bref.
  • user@example.com : login sur la machine example.com
  • x11vnc : lance un serveur VNC sur l’ordinateur distant
    • -localhost : autorise les connexions au serveur VNC depuis l’ordinateur sur lequel tourne le serveur VNC (notre ordinateur distant).
    • -ncache 10 : réserve l’équivalent de 10 écrans sur l’ordinateur local pour servir de cache aux différentes images.
    • -display :0 : mimique l’affichage et les entrées-sorties utilisateurs de l’affichage :0 (l’écran habituel) de l’ordinateur distant.

Commande xtightvncviewer :

  • -encodings :  ces options permettent d’optimiser la bande passante utilisée
    • copyrect : optimise le déplacement de zone d’écran ou le remplissage d’une zone avec un motif répété.
    • tight : compression zlib avec un pré-traitement optimisant la compression et supportant le JPEG.
    • zrle : similaire à tight mais sans le support de la compression JPEG.
    • hextile : division des zones à transférer en bloc de 16×16 pixels.
  • localhost:0 : se connecte sur un serveur VNC en local. Cette connexion sera automatiquement redirigée vers le serveur x11vnc sur l’ordinateur distant par le tunnel ssh.

Actions

Information

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s




%d blogueurs aiment cette page :