Vous n'êtes pas identifié(e).
L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT →
Ceci est une ancienne révision du document !
- Pour choisir, voir les autres Tags possibles dans l'Atelier.
Ce programme permet de prendre le contrôle physique d'un ordinateur à distance ( contrôler clavier, souris, voir l'écran etc …). Utile pour dépanner une personne à distance ou utiliser un ordinateur sans écran ( serveur, ou écran abîmé… ). x11vnc est un programme à installer sur l'ordinateur distant à contrôler ( partie serveur ). Il fonctionne de paire avec un “client VNC” ( un second programme à installer sur votre machine ex : xtigervncviewer ), qui vous donnera le contrôle de la machine distante. x11vnc vient de X11 ( le serveur graphique de Linux ) et VNC, le nom du protocole utilisé ici ( Virtual Network Computing ).
Sur le poste distant à contrôler, que nous nommerons “serveur”
apt install x11vnc
Puis sur votre poste local ( client ) : Il existe de nombreux clients VNC ( graphiques, ou qui se lancent en console , multiprotocols etc). nous prendrons en exemple un client simple : tigervnc-viewer
apt install tigervnc-viewer
Sur le serveur distant à contrôler ayant une session graphique démarrée : lancez le serveur x11vnc
x11vnc
Le serveur x11vnc se lance, affiche ses informations dans votre console, et vous indique qu'il est prêt et attend une demande de connection d'un client sur le port par défaut 5900 :
... The VNC desktop is: vnd:0 PORT=5900 ...
A présent, votre poste local, lancez le client vnc ( xtigervncviewer ) en indiquant l'adresse IP de votre serveur ( ex: 192.168.122.140 ):
xtigervncviewer IP_du_SERVEUR
Une fenetre graphique s'ouvre, affichant l'écran distant, dont vous pouvez contrôler la souris et le clavier .
x11vnc permet beaucoup de configurations : des méthodes pour sécuriser par mots de passe, simplement montrer l'écran ou donner le controle complet ( avec souris clavier ), multi utilisateurs … Lisez le manuel
man x11vnc
.
Quelques options essentielles :
Option | Explication | Exemple |
---|---|---|
-display disp | Précise l'affichage X11 à utiliser. Généralement :0 si vous n'avez qu'un écran. | -disp :O |
-auth fichier | Nécessaire si x11vnc est lancé depuis une connection distante ssh ou en tant que service, ou par un script au démarrage du systeme ( donc lancé par root et non par vous ). Dans ce cas x11vnc doit s'identifier auprès du “serveur X” ( serveur graphique de Linux ) en montrant un “cookie” ( Xautority ); sans quoi le serveur X rejettera x11vnc et l'écran sera inaccessible. Le chemin de ce cookie dépend de votre gestionnaire de connection ( Lightdm, gdm3 etc ). Pour le trouver, dans une console sur votre serveur, faites : pgrep -a Xorg | grep -o '[-]auth [^ ]*' | Pour lightdm : -auth /var/run/lightdm/root/:0 Pour gdm3 : -auth /run/user/1000/gdm/Xauthority etc… |
-shared | Autorise plusieur clients a se connecter en meme temps au serveur x11vnc | |
-forever | (identique à -many ) A la déconection du client, x11vnc reste allumé en attente d'autres demandes. Utile pour lancer un serveur vnc toujours allumé . | |
-xkb | Aide a configurer le clavier si différent entre serveur et client. | |
-bg | (background) Va en arrière plan ( apres le message de lancement ). Utile pour les scripts ( ex: au demarrage du systeme ). Si besoin, activez les “logs” en fichiers, pour retrouver les messages de x11vnc. | |
logs |
Option sécurité | Choisissez une des méthodes suivantes pour sécuriser votre serveur vnc | Exemple |
---|---|---|
-rfbauth fichier_mot_de_pass | Méthode conseillée ! Protège votre serveur vnc par un mot de passe que vous définirez dans un fichier. La première fois avant d'utiliser cette option vous devrez créer et enregistrer un mot de passe ( par défaut dans ~/.vnc/passwd ) avec la commande x11vnc -storepasswd | -rfbauth ~/.vnc_passwd |
-usepw | Si pas de mot de passe déjà stocké sur la machine, alors x11vnc vous demande d'entrer un mot de passe dans la console. Puis vous propose de l'enregistrer dans ~/.vnc/passwd pour les prochains lancements de x11vnc | |
-passwd | Méthode déconseillée car le mot de passe sera visible dans votre ligne de commande depuis la liste des processus en cours Définit un mot de passe. | -passwd secret |
pour la sécurisation par clé ssl , j'invite les bonnes volontés à se pencher dessus .
il y a néamoins possibilité de créer un “tunnel ssh” (voir ci - après et liens)
ssh est un protocole de communication en console .
il permet , sur une console locale , de se connecter sur un ordinateur distant .
exactement comme si on y ouvrait une console .(sur le pc distant)
aussi : en ssh , (sur la machine locale) vers la machine distante :
ssh id_user_distant@ip_distante
pour plus ample information , voire les liens en bas du document .
n.b.: ssh demande souvent une authentification par mot de passe , voire clé R.S.A. .
en réseau local , ssh est très bien . sur internet , c'est de suite plus difficile …
en ayant au préalable enregistré le mot de passe (au dessus) :
cette commande peut lancer x11vnc sur le pc distant depuis la console locale .
on peut aussi la lancer en direct sur le pc distant où est installé le logiciel
x11vnc -many -rfbauth ~/.vnc_passwd
L'inconvénient de cette méthode est que vnc passe par un port non crypté (5900 pour le display :0). Pour traverser une box ou un routeur il faut ouvrir des ports spécifiques pour vnc. L'idéal est de passer par un tunnel. Seul le port 22 pour ssh est routé dans la box, tout ce qui passe à travers est crypté ainsi que les tunnels qu'il ouvrira.
ssh -L 5900:localhost:5900 machine_distante 'x11vnc -display :0'
Pour connecter le client à l'autre bout du tunnel
vncviewer localhost
Toutes ces commandes peuvent être rassemblées dans un script unique :
cat > ~/Téléchargements/vncssl.sh <<EOF #!/bin/bash # Lance le serveur vnc sur la machine distante et le viewer sur la machine locale ssh -L 5900:localhost:5900 machine_distante 'x11vnc -display :0' & sleep 10 vncviewer localhost:0 EOF
ne pas oublier d'attribuer les droits au fichier :
chmod u+x ~/Téléchargements/vncssl.sh
il suffit de lancer en console locale
./vncssl.sh
et d'attendre un peu …
hop ! le bureau distant …
testé sur stretch 9.8.0 mate 1.16.2 et lmde 3 cindy cinnamon : pas de souci .
pour créer un démon , c.a.d. une routine qui lancera x11vnc en arrière plan au démarrage ,
on peut faire ceci :
ce n'est pas une solution universelle . il faut parfois l'adapter .
cat > /etc/systemd/system/x11vnc.service <<EOF [Unit] Description=Service x11vnc Requires=display-manager.service After=display-manager.service [Service] Type=simple ExecStart=/usr/bin/x11vnc -rfbauth /path/.vncpasswd -o /var/log/x11vnc.log -display :0 -auth /var/run/lightdm/root/:0 -forever -shared -rfbport 5900 Restart=on-failure RestartSec=3 [Install] WantedBy=multi-user.target EOF
on attribue les bons droits au fichier :
chmod 0644 /etc/systemd/system/x11vnc.service
on l'installe dans systemd
systemctl enable x11vnc.service
on le lance :
systemctl start x11vnc.service
on vérifie son état :
systemctl status x11vnc.service
et c'est bon , le démon est installé . merci Delurk (irc) . reste plus qu'à redémarrer la machine pour tests .
mais normalement , vncviewer ou remmina vous donneront accès à l'interface graphique .
Lancer un serveur vnc à distance , puis s'y connecter de chez vous, en une commande grâce à ssh :
ssh -f -L 5900:localhost:5900 your.ssh.server "x11vnc -safer -localhost -nopw -once -display :0"; vinagre localhost:5900
Lancer un serveur qui détecte le fichier X Authority :
x11vnc -display :1 $(pgrep -a Xorg | grep -o '[-]auth [^ ]*')
pour simplifier l'usage des commandes de x11vnc :
pour créer un alias , c'est simple :
nano ~/.bash_aliases
y copier le code suivant :
alias assistance='x11vnc -many -rfbauth ~/.vnc_passwd -xkb'
il suffira , dès lors , de taper la commande
assistance
en lieu et place de la longue ligne d'instructions d'origine
N.B.: pour quitter nano :
CTRL + O <enter>
puis
CTRL + X <enter>
si vous préférez , c'est plus facile , copiez - collez le bloc suivant :
cat > /home/switch/.bash_aliases <<EOF alias assistance='x11vnc -many -rfbauth ~/.vnc_passwd -xkb' EOF
adaptez /home/switch/ à votre configuration . normalement /home/<utilisateur>/
je ne sais plus s'il faut redémarrer la session ou le pc après la création d'un alias .
à lire , avant tout :
x11vnc :
linuxtricks (intéressant mais peu fiable)
tigervnc :
tigervnc (eng.) -- le site officiel --
tightvnc :
tightvnc (eng.) -- le site officiel --
ssh :