Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
x11vnc [Le 08/10/2008, 18:04]
82.252.221.37, 127.0.0.1
x11vnc [Le 11/09/2022, 11:07] (Version actuelle)
moths-art Suppression des espaces en fin de ligne (détecté et corrigé via le bot wiki-corrector (https://forum.ubuntu-fr.org/viewtopic.php?id=2067892)
Ligne 1: Ligne 1:
-{{tag>vnc securite}} +{{tag>bureau_à_distance sécurité}}
 ---- ----
  
-<note warning>​A mettre a jour</​note>​ +====== X11vnc ​: contrôler un ordinateur à distance ​======
-====== X11vnc ======+
  
-Cette documentation ​permet à un utilisateur de se connecter sur sa machine à distance à la manière de vnc sur windows. +Ce logiciel ​permet à un utilisateur de se connecter sur sa machine à distance à la manière de [[wpfr>​Remote_Desktop_Protocol|RDP]] ​sur Windows ​(Connexion Bureau à distance).
-Vous prenez le contrôle physique de l'​ordinateur,​ soit l'​écran ​(:0du serveur X, le clavier et la souris. Si une personne se trouve devant l'​écran elle voit alors ce que vous faite. +
-De plus le serveur vnc est persistant, vous pouvez déconnecter votre client vnc sans que cela ne ferme la session locale. Pratique pour donner un coup de main à quelqu'​un en difficulté sur ubuntu.+
  
-Cette documentation complète un autre documentation existant sur vnc qui permet ​de lancer deux session ​simultanément, une physique (de l'utilisateur devant sa machine) ​est une virtuelle (utilisant un client vnc)[[http://​ubuntuforums.org/​showthread.php?​t=122402|ici]]+Vous prenez le contrôle physique ​de l'​ordinateur,​ c'​est-à-dire l'​écran (:0) du serveur ​X, le clavier et la souris. Si une personne se trouve devant ​l'écran, elle voit alors ce que vous faites. 
 +De plus, le serveur VNC est persistant, vous pouvez déconnecter votre client vnc sans que cela ne ferme la session localePratique pour donner un coup de main à quelqu'​un en difficulté sur ubuntu ou tout autre distribution.
  
-Les deux méthodes doivent pouvoir cohabiter ensemble.+Peut aussi être utile pour contrôler un PC sans écran ([[NFS|Serveur NFS]], d'​impression ou autres)
  
 +===== Installation =====
  
-===== Pré-requis =====+[[:​tutoriel:​comment_installer_un_paquet|Installez le paquet]] **[[apt>​x11vnc]]**
  
-Pour Ubuntu sous Gnome il faut activer XDMCP.+===== Description des options =====
  
-Dans //​**Système -> Administration -> Fenêtre ​de connexion**//​\\ +Le contenu ​de cette rubrique est grandement issu de la traduction de l'aide fournie avec X11vnc.
-L'onglet //​**Distante ->**// Mettre //**Style : Identique à locale**//​\\ +
-Puis cliquer sur //**XDMCP** ->// Décocher //​**"​Honor Indirect Requests"​**//​+
  
-Il vous faut également éditer le fichier ​de configuration ​de gdm : +La boîte de dialogue Propriétés ​vous permet ​de définir certains paramètres ​de base d'un fichier exécutant le serveur x11vnc. Après les avoir modifiées, appuyez sur "​OK"​ ou "​Appliquer"​ pour appliquer les modifications,​ ou appuyez sur "​Annuler"​ pour ignorer leur application.
-<​code>​sudo vi /​etc/​gdm/​gdm.conf</​code>​ +
-et remplacer la valeur **DisallowTCP=true** par **DisallowTCP=false**+
  
 +==== Accept Connections ====
  
 +Ou "​accepter les connexions"​.
  
 +Permet de déterminer si les visualiseurs VNC sont autorisés à se connecter ou non. Il correspond aux commandes de contrôle à distance "-R unlock"​ et "-R lock".
  
-===== Installation =====+==== Ask for Confirmation ​====
  
-[[:​tutoriel:​comment_installer_un_paquet|installez les paquets]] xinetd et x11vnc +Ou "​Demander confirmation"​.
-<​code>​sudo apt-get install xinetd x11vnc</​code>​ +
-**Attention lors de l'​installation de xinetd ubuntu enlève le paquet inetutils-inetd ce qui peut être embêtant si vous utiliser déjà ce service (utilisé par les paquets hotway et hotsmtp par exemple) pour remédier à ça installer aussi le paquet openbsd-inetd**+
  
-Créer le fichier X11vnc +Permet de déterminer si un menu contextuel sera présenté à l'​écran lorsque un nouveau visualiseur VNC tente de se connecterLa personne peut choisir ​d'​accepter,​ de rejeter la connexion ou d'​accepter le message en mode visualisation uniquement. Il correspond aux commandes "-R accept:​popup"​. et les commandes de la télécommande "-R accept:"​.
-<​code>​ sudo vi /etc/xinetd.d/​X11vnc</​code>​+
  
-Et mettez ceci : +==== All Clients ViewOnly ​==== 
-<​code>​service X11vnc +ou "tous les Clients en mode visualisation uniquement"​.
-+
-        port            ​5900 +
-        type            ​UNLISTED +
-        socket_type ​    stream +
-        protocol ​       ​tcp +
-        wait            ​no +
-        user            ​root +
-        server ​         ​/​usr/​bin/​x11vnc +
-        server_args ​    -inetd -o /​var/​log/​x11vnc.log -rfbauth /​root/​.vnc/​passwd -display :0 -auth /​var/​lib/​gdm/:​0.Xauth +
-        ​disable ​        = no +
-}</​code>​ +
-Générez un fichier password +
-<​code>​sudo vncpasswd /root/.vnc/​passwd</​code>​ +
-Redémarrer la machine et vérifier que xinetd à bien lancé un service +
-<​code>​cat /​var/​log/​syslog | grep vnc</​code>​ +
-Faite un petit test +
-<​code>​vncviewer localhost:​5900:​0</​code>​+
  
 +Permet de choisir l'​affichage du bureau VNC est en mode visualisation uniquement. Tous les clients ne pourront que regarder lorsque cette option est activée (quelle que soit la façon dont ils sont réglés). Il correspond aux commandes "-R viewonly"​ et "-R noviewonly"​
  
 +==== Shared ====
 +Ou "​Partagés"​
  
 +Permet de déterminer si plusieurs connexions simultanées sont autorisées. ou pas. Il correspond au "-R partagé"​ et au "-R partagé"​. les commandes à distance.
  
 +==== Advertise Service (Zeroconf) ====
 +Ou "​Découverte de service (Zeroconf)"​.
  
-===== Les pistes en cas d'​échec : ===== +Permet de déterminer si ce serveur VNC doit se faire connaître sur le réseau via Zeroconf aussi appelé Bonjour, mDNS et avahi. ​Les utilisateurs de VNC peuvent alors trouver ce service sur le réseau local. Il correspond au "-R zeroconf"​. et "-R nozeroconf"​.
-\\ +
-* ouvrez votre parefeu surtout ​le port 5900\\ +
-* Vérifier la localisation du fichier Xauth\\ +
-* Vérifier que l'​option **--nolisten** n'est pas activé pour gdm, en console tapez\\ +
-<​code>​ps wwaux|grep auth</​code>​+
  
 +==== Serve Java Viewer Applet ====
 +Ou "​Fournir l'​applet de visionnage Java".
  
-===== Quelques options : ===== +Permet de déterminer ​si ce serveur VNC doit fournir un visualiseur Java VNC Viewer. L'applet est accessible via HTTP sur http://hostname:​5800(ou port 5800+n pour VNC 5900+n)Un navigateur Web compatible java peut alors se connecter à l'​application ​par VNC. Si SSL est actif, l'URL HTTPS https://hostname:​5900(etc.) fonctionneront également. Cela nécessite le fichier ​jar de la visionneuse java x11vnc (partagé/x11vnc/classes) à installer. Il correspond aux commandes "-R http" et "-R nohttp"​.
-\\ +
-* Vous pouvez enlever les log si vous n'en voulez pas en remplaçant **-o /var/log/x11vnc.log** par **-q** \\ +
-* enlever le mot de passe en supprimant **-rfbauth ​/root/.vnc/passwd** du fichier ​**/etc/xinetd.d/X11vnc**+
  
-Les Liens utiles :\\ +==== Solid Background Color ==== 
-[[http://​forum.ubuntu-fr.org/​viewtopic.php?​id=197925]]\\ +Ou "​Couleur d'​arrière-plan solide"​
-[[http://​www.karlrunge.com/​x11vnc/#​faq-inetd]]\\ +
-[[http://​ubuntuforums.org/​showthread.php?​t=122402]]\\+
  
 +Permet d'​améliorer les performances de la VNC. Si cette option est activée, x11vnc essaiera d'​utiliser l'​arrière-plan du bureau comme une couleur unie (ce qui comprime considérablement l'​image). Il correspond aux commandes "-R solid" et "-R nosolid"​.
  
 +==== Password ====
 +Ou "Mot de passe"
 +
 +Permet de définir le mot de passe de session que les utilisateurs peuvent utiliser pour obtenir un accès complet. À l'​affichage. Cela ne fonctionnera que si x11vnc a été démarré avec graphiquement ou présent dans la zone de notification.
 +
 +<​note>​Ces mots de passe "​session"​ ne durent que pour le x11vnc actuel, ils ne sont pas mémorisés. Pour les mémoriser, consultez les options de x11vnc -storepasswd,​ -passwd, et -rfbauth.</​note>​
 +
 +
 +==== ViewOnly Password ====
 +Ou "Mot de passe en mode visualisation"​.
 +
 +Permet de définir le mot de passe de session que les utilisateurs peuvent utiliser pour n'​avoir accès qu'à l'​affichage. l'​accès à l'​écran. Cela ne fonctionnera que si x11vnc a été démarré avec graphiquement ou présent dans la zone de notification.
 +
 +<​note>​Ces mots de passe "​session"​ ne durent que pour le x11vnc actuel, ils ne sont pas mémorisés. Pour les mémoriser, consultez les options de x11vnc -storepasswd,​ -passwd, et -rfbauth.</​note>​
 +===== Utilisation =====
 +
 +Vous pouvez utiliser l'​interface graphique de x11vnc disponible maintenant dans votre menu applications.
 +
 +==== En ligne de commande ====
 +
 +Commencez par ouvrir un **[[Terminal]]**
 +
 +=== Générez un fichier password ===
 +
 +Pour protéger l'​accès à votre ordinateur il est fortement recommandé de créer un mot de passe qui sera sauvegardé dans un fichier. Ce fichier sera appelé ultérieurement lors de l'​exécution de x11vnc. Veillez à sauvegarder votre fichier dans un emplacement compatible avec votre configuration (votre dossier utilisateur ou un autre emplacement du système).
 +
 +Dans l'​exemple ci-dessous, le fichier sera sauvegardé à la racine de votre dossier utilisateur et les droits d'​accès seront modifié en accès complet pour le propriétaire et lecture + exécution pour le groupe. Le groupe public n'aura aucun accès au fichier.
 +
 +<​code>​x11vnc -storepasswd votre_mot_de_passe ~/​.vnc_passwd</​code>​
 +
 +Vous pouvez changer les droits d'​accès du fichier de mot de passe en octal à 750 ou en symbolique à -rwxr-x---
 +
 +<​code>​
 +chmod 750 ~/​.vnc_passwd #en octal
 +chmod u+rwx,​g+rx-w,​o-rwx ~/​.vnc_passwd #en symbolique
 +</​code>​
 +
 +Ensuite lancez x11vnc en tapant dans un terminal:
 +
 +<​code>​x11vnc -many -rfbauth ~/​.vnc_passwd</​code>​
 +
 +Il est également possible de créer un alias vers la commande précédente permettant d'​exécuter x11vnc plus rapidement
 +
 +<​code>​alias assistance='​x11vnc -many -rfbauth ~/​.vnc_passwd'</​code>​
 +  ​
 +==== À l'​ouverture de session ====
 +
 +Vous pouvez maintenant ajouter x11vnc à vos "​Applications au démarrage"​ en y ajoutant la commande de lancement citée juste au dessus comme indiqué dans le tutoriel [[tutoriel:​application_demarrage|ajouter une application au démarrage de la session]]
 +
 +Si vous optez pour la méthode utilisant un lanceur au démarrage, créez le fichier **~/​.config/​autostart/​x11vnc.desktop** et y ajoutez les lignes:
 +<​code>​
 +[Desktop Entry] ​
 +
 +Type=Application
 +Name=x11vnc
 +Exec=x11vnc -many -rfbauth /​root/​.vnc_passwd
 +</​code>​
 +
 +
 +==== Au démarrage du système ====
 +A partir de [[:​Xenial|Ubuntu 16.04]], on utilise **systemd** en remplacement de [[:​Init_d|Init.d]] ou [[:​upstart]] pour la gestion des services au demarrage.
 +
 +=== Création du service X11vnc ===
 +
 +Générez un fichier password pour X11vnc dans le dossier root comme expliqué ci-dessus.
 +<code bash>
 +x11vnc -storepasswd /​root/​.vnc_passwd
 +</​code>​
 +
 +[[:​tutoriel:​comment_modifier_un_fichier|Créez le fichier]] **/​etc/​systemd/​system/​x11vnc.service** [[:​sudo|avec les droits d'​administration]] et remplissez-le comme ceci :
 +<file txt /​etc/​systemd/​system/​x11vnc.service>​
 +[Unit]
 +Description=x11vnc remote desktop server
 +After=multi-user.target
 +
 +[Service]
 +Type=simple
 +ExecStart=/​usr/​bin/​x11vnc -forever -shared -bg -xkb -rfbauth /​root/​.vnc_passwd
 +
 +Restart=on-failure
 +
 +[Install]
 +WantedBy=multi-user.target
 +</​file>​
 +
 +Vous pouvez maintenant lancer le service et vérifier son bon fonctionnement :
 +<​code>​
 +sudo systemctl daemon-reload
 +sudo systemctl start x11vnc
 +sudo systemctl status x11vnc
 +</​code>​
 +
 +Si tout va bien, il n'y plus qu'à dire à systemd de lancer x11vnc au démarrage. En cas d'​erreur d'​authentification auprès du serveur X, consultez la rubrique "​Résolution de problèmes"​.
 +<​code>​sudo systemctl enable x11vnc.service</​code>​
 +
 +==== Démarrer VNC comme service inetd ====
 +
 +<note warning>​Méthode déconseillée ! Ne marche que depuis Ubuntu 11.10 jusqu'​a 14.04</​note>​
 +
 +En démarrant x11vnc via inetd vous aurez la possibilité de voir l'​écran de votre ordinateur distant quel que soit l'​utilisateur connecté ! (Vous verrez même l'​écran de login !)\\
 +Pratique si vous ne voulez pas que l'​ordinateur distant ne soit pas en autologin et donc soit protégé par un second mot de passe par dessus le protocol VNC.
 +
 +<note info>​Inetd est un "​superserveur",​ une sorte de "​serveur de serveurs"​. \\
 +Il gère les services réseaux et ne démarre les serveurs que s'ils sont demandés, puis les ferment quand ils ne servent plus ! \\
 +Ceci permet d'​économiser de la mémoire vive, peut être même du processeur dans certains cas, mais aussi permet d’échapper à un plantage du serveur en question. En effet si vnc plante, il serra mis dans un coin et quand vous accéderez à nouveau à VNC un nouveau serveur x11vnc serra lancé !</​note>​
 +
 +Pour cela, il faut tout d'​abord installer inetd. Installez inetd en [[:​tutoriel:​comment_installer_un_paquet|installant le paquet]] **openbsd-inetd** (je vous déconseille le traditionnel inetd qui n'est plus supporté ni xinetd qui n'est pas bien intégré dans Ubuntu)
 +
 +Créez un mot de passe pour votre serveur VNC en tapant dans un **[[terminal]]**:​
 +
 +  sudo x11vnc -storepasswd "​password"​ /​root/​.vnc_passwd
 +
 +<​note>​Remplacez bien évidemment "​password"​ par le mot de passe de votre choix</​note>​
 +
 +[[:​tutoriel:​comment_modifier_un_fichier|Ouvrez ensuite le fichier de configuration d'​inetd /​etc/​inetd.conf]] ****
 +
 +ajoutez une ligne pour VNC entre les lignes **#:​INTERNAL:​ Internal services** et ** #:STANDARD: These are standard services**:
 +
 +  sudo echo "5900 stream tcp nowait root /​usr/​sbin/​tcpd /​usr/​bin/​x11vnc -inetd -q -rfbauth /​root/​.vnc_passwd -display :0 -auth /​var/​run/​lightdm/​root/:​0"​ >> /​etc/​inetd.conf
 +  ​
 +Enregistrez le fichier, puis redemarrez le service inetd via la commande:
 +
 +  sudo service openbsd-inetd restart
 +  ​
 +VNC devrait maintenant être en route dès le démarrage de votre PC
 +
 +=== Accéder à VNC via internet ===
 +
 +Dans l'​état actuel des choses, si vous avez un routeur, VNC n'est accessible que sur votre réseau local. Si vous voulez y accéder à travers internet il faudra ouvrir le port 5900 en TCP en pointant le port vers l'IP de l'​ordinateur hébergeant le serveur VNC.
 +
 +<note important>​Si vous décidez d'​ouvrir l'​accès VNC vers internet ne désactivez surtout pas l'​authentification par mot de passe ! Et ne choisissez pas un mot de passe trop simple.</​note>​
 +<note important>​L'​accès à la machine par SSH forwarding est préféré car SSH apporte plus de sécurité.
 +Cette méthode (accessible après installation sur le serveur de [[apt://​openssh-server]]) est un peu plus complexe, mais elle peut être simplifiée en utilisant le [[remmina|Visionneur de bureaux distants Remmina]] depuis le PC client</​note>​
 +
 +
 +===== Configuration =====
 +
 +  * Vous pouvez spécifier un emplacement pour les log ajoutant **-o /​var/​log/​x11vnc.log** à la commande de lancement.
 +  * Vous pouvez enlever l'​obligation d'​utiliser un mot de passe en supprimant **-rfbauth /​root/​.vnc_passwd** de la commande de lancement (**Hautement déconseillé si votre VNC est accessible via internet ! Tout le monde pourrait contrôler votre ordinateur**)
 +
 +===== Résolution de problèmes =====
 +==== Permission d'​accès au serveur X ====
 +
 +Si x11vnc est exécuté via SSH, comme service ou par le compte root, il faut définir des autorisations pour se connecter au serveur X (Xautority).
 +
 +Être root n'est généralement pas suffisant parce que le MIT-MAGIC-COOKIE accessible est incorrect. Le fichier cookie contient la clé secrète qui permet à x11vnc de se connecter à l'​affichage X souhaité. Dans ce cas il est possible d'​indiquer explicitement le fichier MIT-MAGIC-COOKIE en vous inspirant des exemples suivant :
 +
 +<code bash>
 +x11vnc -auth /​home/​VOTRE_COMPTE_UTILISATEUR/​.Xauthority -display :0
 +x11vnc -auth /​tmp/​.gdmzndVlR -display :0
 +</​code>​
 +
 +Si aucune session n'est démarré, il est possible d'​utiliser le fichier MIT-MAGIC-COOKIE du gestionnaire de connexion. Parfois la commande "ps wwwwaux | grep auth" peut révéler l'​emplacement du fichier.
 +<code bash>
 +ps wwwwaux | grep auth
 +#root      1204  2.3  1.0 425028 83284 tty7     Ssl+ 15:06   1:18 /​usr/​lib/​xorg/​Xorg -core :0 -seat seat0 -auth /​var/​run/​lightdm/​root/:​0 -nolisten tcp vt7 -novtswitch
 +ps wwwwaux | grep -o '​[-]auth [^ ]*'
 +#-auth /​var/​run/​lightdm/​root/:​0
 +pgrep -a Xorg | grep -o '​[-]auth [^ ]*' #pour être certains de sélectionner le process Xorg
 +#-auth /​var/​run/​lightdm/​root/:​0
 +</​code>​
 +
 +Quelques exemples valable pour différent gestionnaire de connexion :
 +<​file>​
 +gdm:     -auth /​var/​gdm/:​0.Xauth
 +         -auth /​var/​lib/​gdm/:​0.Xauth
 +kdm:     -auth /​var/​lib/​kdm/​A:​0-crWk72
 +         -auth /​var/​run/​xauth/​A:​0-crWk72
 +xdm:     -auth /​var/​lib/​xdm/​authdir/​authfiles/​A:​0-XQvaJk
 +lightdm: -auth /​var/​run/​lightdm/​root/:​0
 +dtlogin: -auth /​var/​dt/​A:​0-UgaaXa
 +</​file>​
 +
 +==== Autres pistes de recherche ====
 +
 +Assurez vous que le port 5900 est ouvert sur le pare-feu.
 +
 +Vérifiez que l'​option **%%--%%nolisten** n'est pas activée pour gdm, en console tapez : <​code>​ps wwwwaux|grep auth</​code>​ Pour enlever l'​option **nolisten** il faut ajouter dans le fichier//​[[:​tutoriel:​comment_modifier_un_fichier| /​etc/​gdm/​custom.conf]]//​ :
 +
 +<​code>​[security] ​
 +DisallowTCP=false</​code>​
 +
 +Avec **Lubuntu** ou avec le gestionnaire de connexion LightDM, modifiez le fichier// [[:​tutoriel:​comment_modifier_un_fichier|/​etc/​lightdm/​lightdm.conf]]//​ et ajoutez la directive **xserver-allow-tcp=true** dans la section **SeatDefaults**
 +
 +<​code>​
 +[SeatDefaults]
 +xserver-allow-tcp=true]]
 +</​code>​
 +
 +Redémarrez Lightdm :
 +<​code>​sudo service lightdm restart</​code>​
 +
 +Au prochain démarrage l'​option aura disparu.
 +
 +===== Désinstallation =====
 +
 +Pour supprimer cette application,​ il suffit de [[:​tutoriel:​comment_supprimer_un_paquet|supprimer son paquet]]. La configuration de l'​application sera conservée ou supprimée selon la méthode de désinstallation que vous choisirez.
 +
 +===== Liens utiles =====
 +
 +  * [[https://​forum.ubuntu-fr.org/​viewtopic.php?​id=197925]]
 +  * [[http://​www.karlrunge.com/​x11vnc/#​faq-inetd]]
 +  * [[https://​ubuntuforums.org/​showthread.php?​t=122402]]
 +  * [[http://​www.libre-astux.info/?​p=79]]
 +  * [[https://​enunclic-cappel.fr/​documents/​aide-a-distance-avec-vnc/​|Faire de l'aide à distance avec x11vnc et ssvnc de manière sécurisée]]
 +  * [[http://​ubuntuforums.org/​showpost.php?​p=2377920&​postcount=19]] x11vnc et :0
 +
 +----
 +//​Contributeur principal : FIXME.//
  • x11vnc.1223481871.txt.gz
  • Dernière modification: Le 29/10/2008, 17:52
  • (modification externe)