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


50

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 configuration x11vncdu service en tant que service (avant la connexion de l'utilisateur), de sorte 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


1
La quantité de toutes ces commandes et configurations qu'un utilisateur moyen doit faire juste pour se connecter à l'écran d'un ordinateur distant est simplement ridicule. Sous Windows, cela fonctionne ... en quelques clics de souris, bien que la fonctionnalité de bureau à distance ne fonctionne que sur des éditions coûteuses. J'ai passé quelques heures et je ne pouvais toujours pas faire démarrer VNC automatiquement. C’est la raison pour laquelle Linux restera un système d’exploitation impopulaire pour les utilisateurs moyens ... (Veuillez ne pas indiquer de mots tels que "Linux est utilisé dans Android!" contexte.)
Légumes

Réponses:


43

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 des nouvelles -auth guessfonctionnalités de 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

Référencé à l' adresse bbs.archlinux.org/viewtopic.php?id=168756 pour obtenir des conseils sur les paramètres Requis / Afters
babelmonk le

2
pourquoi cette réponse n'est-elle pas marquée comme étant la bonne réponse?
Cybex

1
S'il n'y a pas d' affichage du tout, alors on peut vouloir définir la résolution arbitraire: sudo xrandr --fb 1920x1080.
Orient

2
Ce n'est pas une donnée, x11vnc fonctionnera immédiatement. Ce serait une bonne idée de fournir une commande de test avant de vous engager dans un service qui redémarre en cas d'échec toutes les 2 secondes. J'utilise lightdm et xfce4 sur un serveur cloud Ubuntu 17.10 sans tête. Restart-secdevrait êtreRestartSec
Ray Foss

1
Ubuntu 18.04 semble également vouloir RestartSecplutôt que Restart-sec.
Scott Willeke

43

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 GNU Screen 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


1
Vous pouvez exécuter en x11vnctant qu'utilisateur normal, pas de problème. Par exemple: ssh sur l'hôte et exécuté x11vnc -safer -forever -display :0 2>&1 &dans une session tmux (bonne pratique), il s'exécutera sous $USER.
Terry Wang

Aussi, juste pour référence, afin de modifier la fenêtre d'
affichage

2
Cela n'explique pas comment le faire démarrer automatiquement comme demandé (et est une exigence commune pour une telle fonctionnalité)
LovesTha

1
Voir ici pour une liste complète des options x11vnc. Il m'a fallu beaucoup de temps pour trouver ceci: karlrunge.com/x11vnc/x11vnc_opts.html
Gabriel Staples

1
Et voir ici pour un excellent tutoriel sur cette mise en place sur un Raspberry Pi avec démarrage automatique au démarrage: megaleecher.net/Raspberry_Pi_VNC_Setup
Gabriel Staples

14

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 ça! Vous devriez maintenant pouvoir vous connecter à n’importe quel client VNC même avant la connexion.


Mais comment cela fonctionne-t-il lorsque lightdm ne crée pas le fichier d'authentification tant qu'un moniteur n'est pas connecté?
LovesTha

@didibus J'ai essayé de faire cela à Lubuntu, mais je ne parviens pas à démarrer x11vncautomatiquement à chaque fois. Cela ne commencera même pas comme service, d'ailleurs. La syntaxe de fichier est correcte et je peux très bien démarrer à x11vncpartir du shell. Qu'est-ce que je rate?
linuxgringo

Cela fonctionne aussi sur Lubuntu. Plus précisément, la version de Lubuntu par LeMaker pour Banana Pi.
AaronD

3

babelmonks répond en tant que script bash, copie et enregistre sous x11vnc.sh & exécute avec sudo bash /path/to/file/x11vnc.sh

#!/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

Si vous souhaitez améliorer une autre réponse, proposez-lui une modification et ne créez pas de nouvelle réponse.
David Foerster

Nous ajouterons volontiers ceci à la mienne si vous souhaitez créer un edit @ nix-badweasel
babelmonk le


1

Voici une configuration qui fonctionne pour sddm(pour KDE 5). Actuellement, -auth guesscela ne fonctionne pas sddm, le fichier auth est 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, x11vncne peut pas trouver le fichier d'authentification, peut-être sddmgénère le fichier d'authentification plus tard. Ceci est testé sur Manjaro 18.


0

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.


0

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

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.