Il peut être utile de prendre la main à distance sur un PC équipé de GNU/Linux pour aider un de nos amis dans la détresse, ou pour accéder à un ordinateur de la maison constamment allumé, sans écran.
x11vnc
Installation
On va installer donc le paquet x11vnc qui permet à un utilisateur de se connecter sur sa machine à distance à la manière de RDP sur Windows (Connexion Bureau à distance).
Ubuntu et dérivés :
sudo apt-get install x11vnc
Archlinux Manjaro
sudo pacman -S x11vnc
Et voila, c’est installé !
Utiliser x11vnc
Générer un mot de passe
Pour protéger la prise de main à distance, il est recommandé de créer un mot de passe pour permettre la prise de main (où **** est le mot de passe) :
x11vnc -storepasswd "*******" ~/.vnc_passwd
Lancement Manuel
Pour lancer le serveur VNC, c’est en console, en session utilisateur :
x11vnc -many -rfbauth ~/.vnc_passwd -xkb
Il est possible de placer dans son .bashrc
un alias de manière à ne taper qu’un mot mnémotechnique :
alias assistance='x11vnc -many -rfbauth /home/yann/.vnc_passwd -display :0 -listen localhost'
Faire Ctrl+C pour arrêter le serveur vnc.
Tunnel SSH
Vous devez avoir installé et configuré SSH.
Utilisez le drapeau -localhost
avec x11vnc pour qu’il se lie à l’interface locale. Une fois que c’est fait, vous pouvez utiliser SSH pour tunneliser le port ; puis, connectez-vous à VNC via SSH.
ssh -t -L 5900:localhost:5900 remote_host 'x11vnc -localhost -display :0'
# exemple avec clés et port différent de 22
ssh -f -L 5900:localhost:5900 -p 56230 -i /home/yannick/.ssh/e6230 yann@192.168.0.32 'x11vnc -localhost -display :0'
(Vous devrez probablement fournir des mots de passe/phrases de passe pour vous connecter de votre emplacement actuel à votre compte Unix remote_host ; nous supposons que vous avez un compte de connexion sur remote_host et qu’il fait tourner le serveur SSH)
Puis, dans une autre fenêtre du terminal de votre machine actuelle, exécutez la commande :
vncviewer -PreferredEncoding=ZRLE localhost:0
Si le curseur est mal affiché, c’est possible de mettre l’option -cursor
à la ligne de commande x11vnc
Le programme écoute sur le port 5900. Il faut penser à ouvrir le parefeu sur ce port en TCP{:.info}
Script - Tunnel SSH
Ouverture distant et redirection du port 5900 via tunnel ssh, reprise de la main (nohup
)
On mémorise le processus ssh (pidof
)
Lancement de vncviewer
En sortie du viewer, on tue le processus ssh ...
avec kill
nano vnc.sh
#!/bin/bash
nohup ssh -f -L 5900:localhost:5900 -p 56230 -i /home/yannick/.ssh/e6230 yann@192.168.0.32 'x11vnc -localhost -display :0'
p=$(pidof -s ssh)
vncviewer -PreferredEncoding=ZRLE localhost:0
kill $p
echo "FIN"
exit 0
Droits en exécution
chmod +x vnc.sh