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 démarre en tant que service (avant la connexion de l'utilisateur) de sorte que lors de la connexion avec VNC, je serai présenté avec un écran de connexion graphique ?

Je suis novice en matière de Linux et je vous prie donc de donner le plus de détails possible dans vos réponses/commentaires.

Merci

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 démarrer 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 suivante :

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 de lancer 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 être en mesure de vous connecter en utilisant un client vnc tel que krdc (pour KDE). Vous pouvez utiliser [GNU Screen][1] pour que x11vnc continue à fonctionner 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.

[1] : http://en.wikipedia.org/wiki/GNU_Screen

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 démarrer en exécutant : sudo start x11vnc Vous pouvez vérifier le journal à l'adresse /var/log/upstart/x11vnc.log

Commentaires (9)

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 :

  • Profiter de la nouvelle fonctionnalité -auth guess de x11vnc - 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

Ensuite, 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
Commentaires (7)

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
    
    terminer le script
  5. Enregistrez le fichier. Vous avez créé un job pour l'événement Upstart login-session-start.

  6. Redémarrez Ubuntu.

Et voilà ! Vous devriez maintenant être capable de vous connecter avec n'importe quel client VNC avant même de vous connecter.

Commentaires (3)