web-dev-qa-db-fra.com

Comment configurer x11vnc pour accéder avec l'écran de connexion graphique?

J'ai un serveur sous Ubuntu 12.10 et j'ai besoin de pouvoir m'installer à distance sur ce serveur sans être connecté.

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

Quelqu'un peut-il me donner des instructions pas à pas sur la façon de configurer x11vnc pour qu'il démarre en tant que service (avant la connexion de l'utilisateur) afin que, lors de la connexion à VNC, un écran de connexion graphique s'affiche?

Je suis nouveau sur Linux, merci de donner autant de détails que possible dans vos réponses/commentaires.

Merci

47
user115250

Installez x11vnc:

Sudo apt-get install x11vnc

Créez un mot de passe pour votre utilisateur:

x11vnc -storepasswd

Si vous avez la configuration ssh, vous pouvez l'utiliser pour démarrer x11vnc en supposant que vous êtes déjà connecté, mais n'oubliez pas de lui indiquer 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 utilisiez lightdm pour la connexion, vous pouvez résoudre ce problème, vous pouvez démarrer x11vnc avec la commande suivante:

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 à la connexion sans utiliser Sudo.

Une fois que cela est en cours d'exécution, vous devriez pouvoir vous connecter en utilisant un client vnc tel que krdc (pour KDE). Vous voudrez peut-être utiliser Écran GN pour maintenir x11vnc en marche sans que la session ssh ne soit ouverte

J'ai pu comprendre cela en utilisant http://ubuntuforums.org/showthread.php?t=2039022 .

Voici un exemple de travail que vous pouvez utiliser pour le lancer au démarrage. Il doit être placé dans /etc/init/x11vnc.conf. (Notez que les versions les plus récentes d'Ubuntu utilisent systemd. Consultez donc l'autre réponse contenant 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 consulter le journal à l’adresse: /var/log/upstart/x11vnc.log

42
Allen

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

  • Tirez parti de la nouvelle fonctionnalité -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

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
39
babelmonk

Voici comment:

  1. Installez le serveur X11VNC (ou via Ubuntu Software Center -> Serveur X11VNC)

    Sudo apt-get install x11vnc
    
  2. Créez un fichier de mot de passe VNC.

    Sudo x11vnc -storepasswd yourVNCpasswordHERE /etc/x11vnc.pass
    
  3. Créez un fichier de travail dans l'éditeur nano (ou gedit, un bloc-notes, 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 login-session-start.

  6. Redémarrez Ubuntu.

C'est tout! Vous devriez maintenant pouvoir vous connecter à n’importe quel client VNC même avant la connexion.

14
Didier A.

babelmonks répond en tant que script bash, copiez et enregistrez sous x11vnc.sh et exécutez-le avec Sudo bash /path/to/file/x11vnc.sh (désolé, ne disposez pas de suffisamment de représentants 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
3
Nix Badweasel

Voici une configuration qui fonctionne pour sddm (pour KDE 5). Actuellement, -auth guess ne fonctionne pas pour sddm, le fichier auth étant différent à chaque fois, nous avons donc 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 que sddm génère le fichier d'authentification plus tard. Ceci est testé sur Manjaro 18.

1
sudoer

Utilisez mon script pour une configuration facile: installvncubuntu1604.sh

Usage:

chmod +x ./installvncubuntu1604.sh; Sudo ./installvncubuntu1604.sh
1
user665310

Installer le paquet x11vnc

#Sudo apt-get install x11vnc

Puis définissez le mot de passe

#x11vnc -usepw

Puis créez un script de démarrage pour x11vnc

#Sudo nano /etc/x11vnc.sh

Dans le fichier:

/usr/bin/x11vnc -bg -forever -shared -reopen -usepw

Puis enregistrez

#Sudo chmod 777 /etc/x11vnc.sh

Ajoutez ensuite le fichier de script à Control Center => Application de démarrage, puis cliquez sur Ajouter.

> Name-----------x11vnc

> Command-----<map the script file

> Comment------service

Ceci doit être obligatoirement ajouté pour tous les utilisateurs

Cela fonctionnera après la connexion de l'utilisateur uniquement

0
Nandhakumar M

J'utilise mon propre shell: https://github.com/dvdvideo1234/UbuntuBatches/tree/master/x11VNC

start on login-session-start

script

Sudo /usr/bin/x11vnc -xkb -auth /var/run/lightdm/root/:0 -noxrecord -noxfixes -noxdamage -rfbauth /var/srv/x11vnc/x11vnc.pass -forever -bg -rfbport <your_port> -o /var/srv/x11vnc/x11vnc.log

end script

dans le fichier:

/etc/init/x11vnc.conf

Il se lance automatiquement au démarrage, même sur l'écran de connexion, il demande un mot de passe.