62 votes

Comment configurer x11vnc pour accéder à un écran de connexion graphique ?

J'ai un serveur fonctionnant sous Ubuntu 12.10 et j'ai besoin de pouvoir me connecter à distance à ce serveur sans être connecté.

J'ai trouvé de nombreuses solutions, mais aucune ne semble fonctionner avec la version 12.10.

Quelqu'un peut-il me donner des instructions étape par étape sur la façon de configurer x11vnc pour qu'il soit lancé en tant que service (avant la connexion de l'utilisateur) de sorte que, lorsque je me connecte avec VNC, un écran de connexion graphique s'affiche ?

Je suis novice en matière de Linux, alors veuillez donner le plus de détails possible dans vos réponses/commentaires.

Merci

59voto

babelmonk Points 819

Les réponses ci-dessus résolvent le problème, avec toutefois quelques modifications pour les versions d'Ubuntu avec systemd (15.04+), comme suit :

  • Profitez des nouvelles -auth guess dans x11vnc - ce qui aide !
  • Mise à jour pour systemd (pas upstart)

Exécutez ce qui suit pour installer :

sudo apt-get install x11vnc
sudo x11vnc -storepasswd yourVNCpasswordHERE /etc/x11vnc.pass
# for Ubuntu 15.04+
sudo nano /lib/systemd/system/x11vnc.service
# for Ubuntu 16.10+
sudo nano /etc/systemd/system/x11vnc.service

Insérez ceci dans le fichier :

[Unit]
Description="x11vnc"
Requires=display-manager.service
After=display-manager.service

[Service]
ExecStart=/usr/bin/x11vnc -xkb -noxrecord -noxfixes -noxdamage -display :0 -auth guess -rfbauth /etc/x11vnc.pass
ExecStop=/usr/bin/killall x11vnc
Restart=on-failure
Restart-sec=2

[Install]
WantedBy=multi-user.target

Alors, commencez par :

sudo systemctl daemon-reload
sudo systemctl start x11vnc

Et assurez-vous que le service démarre au démarrage :

sudo systemctl enable x11vnc

46voto

mrcrowl Points 111

Installez x11vnc :

sudo apt-get install x11vnc

Créez un mot de passe pour votre utilisateur :

x11vnc -storepasswd

Si vous avez configuré ssh, vous pouvez l'utiliser pour lancer x11vnc en supposant que vous êtes déjà connecté, mais n'oubliez pas de lui dire d'utiliser votre fichier de mots de passe :

x11vnc -usepw

Si vous n'êtes pas connecté, vous obtiendrez une erreur avec l'explication :

If NO ONE is logged into an X session yet, but there is a greeter login
program like "gdm", "kdm", "xdm", or "dtlogin" running, you will need
to find and use the raw display manager MIT-MAGIC-COOKIE file.
Some examples for various display managers:

 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
 dtlogin: -auth /var/dt/A:0-UgaaXa

En supposant que vous utilisez lightdm pour la connexion, vous pouvez résoudre ce problème en démarrant x11vnc avec la commande :

sudo x11vnc -xkb -noxrecord -noxfixes -noxdamage -display :0 -auth /var/run/lightdm/root/:0 -usepw

Je ne suis pas sûr que ce soit la meilleure idée d'exécuter x11vnc en tant que root. Peut-être que quelqu'un pourrait éditer avec un moyen d'accéder au login sans utiliser sudo.

Une fois que cela fonctionne, vous devriez pouvoir vous connecter en utilisant un client vnc tel que krdc (pour KDE). Vous pouvez utiliser Écran GNU pour garder x11vnc en marche sans avoir besoin de la session ssh ouverte

J'ai pu résoudre ce problème en utilisant http://ubuntuforums.org/showthread.php?t=2039022 .

Voici un exemple de job upstart que vous pouvez utiliser pour le faire fonctionner au démarrage. Il doit être placé dans /etc/init/x11vnc.conf. (Notez que les versions plus récentes d'Ubuntu utilisent systemd, donc voyez l'autre réponse qui a un exemple de configuration systemd) :

# description "start and stop x11vnc"

description "x11vnc"

start on runlevel [2345]
stop on runlevel [^2345]

console log
#chdir /home/
#setuid 1000
#setgid 1000

respawn
respawn limit 20 5

exec x11vnc -xkb -noxrecord -noxfixes -noxdamage -display :0 -auth /var/run/lightdm/root/:0 -usepw

Une fois que vous avez créé ce fichier, vous pouvez le lancer en exécutant : sudo start x11vnc Vous pouvez vérifier le journal à l'adresse /var/log/upstart/x11vnc.log

16voto

Didier A. Points 279

Voici comment :

  1. Installez le serveur X11VNC (ou via Ubuntu Centre de logiciels -> Serveur X11VNC)

    sudo apt-get install x11vnc
  2. Créez un fichier de mots de passe VNC.

    sudo x11vnc -storepasswd yourVNCpasswordHERE /etc/x11vnc.pass
  3. Créez un fichier de travail dans l'éditeur nano (ou gedit, leafpad etc.).

    sudo nano /etc/init/x11vnc.conf
  4. Collez ceci dans le fichier :

    start on login-session-start
    
    script
    
    /usr/bin/x11vnc -xkb -forever -auth /var/run/lightdm/root/:0 -display :0 -rfbauth /etc/x11vnc.pass -rfbport 5900 -bg -o /var/log/x11vnc.log
    
    end script
  5. Enregistrez le fichier. Vous avez créé un travail pour l'événement Upstart début de session de connexion .

  6. Redémarrez Ubuntu.

C'est ça ! Vous devriez maintenant être en mesure de vous connecter avec n'importe quel client VNC avant même de vous connecter.

3voto

Nix Badweasel Points 31

Babelmonks réponse en tant que bash script, copier et enregistrer en tant que x11vnc.sh et exécuter avec sudo bash /path/to/file/x11vnc.sh (désolé de ne pas avoir assez de rep pour poster un commentaire)

#!/bin/bash
#install x11vnc & set password
apt-get install x11vnc -y
x11vnc -storepasswd 123456 /etc/x11vnc.pass
#create config file for  system service
cat > /lib/systemd/system/x11vnc.service <<-EOF
[Unit]
Description="x11vnc"
Requires=display-manager.service
After=display-manager.service

[Service]
 ExecStart=/usr/bin/x11vnc -xkb -noxrecord -noxfixes -noxdamage -display :0 -auth guess -rfbauth /etc/x11vnc.pass
ExecStop=/usr/bin/killall x11vnc

[Install]
WantedBy=multi-user.target
EOF
#restart new services &  enable on boot
systemctl daemon-reload
systemctl start x11vnc
systemctl enable x11vnc

2voto

sudoer Points 21

Voici une configuration qui fonctionne pour sddm (pour KDE 5). Actuellement, -auth guess ne fonctionne pas pour sddm le fichier d'authentification est différent à chaque fois, donc nous avons besoin de quelque chose comme -auth /var/run/sddm/* . Le service ressemble,

[Unit]
Description="x11vnc"
After=multi-user.target

[Service]
ExecStart=/bin/sh -c "/usr/bin/x11vnc -xkb -noxrecord -display :0 -auth /var/run/sddm/* -rfbauth /etc/x11vnc.pass"
ExecStop=/usr/bin/killall x11vnc

[Install]
WantedBy=multi-user.target

Je dois le mettre après multi-user.target si, après display-manager.service , x11vnc ne peut pas trouver le fichier d'authentification, peut-être sddm génère le fichier d'authentification plus tard. Ceci est testé sur Manjaro 18.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X