¿Cómo configurar x11vnc para acceder con la pantalla de inicio de sesión gráfica?


50

Tengo un servidor que ejecuta Ubuntu 12.10 y necesito poder acceder a este servidor de forma remota sin tener que iniciar sesión.

He encontrado muchas soluciones, pero ninguna parece funcionar con 12.10.

¿Alguien puede darme instrucciones paso a paso sobre cómo configurar el x11vncinicio como un servicio (antes del inicio de sesión del usuario) para que cuando me conecte con VNC se me presente una pantalla de inicio de sesión gráfica?

Soy nuevo en Linux, así que por favor brinde la mayor cantidad de detalles posible en sus respuestas / comentarios.

Gracias


1
La cantidad de todos estos comandos y configuraciones que un usuario promedio necesita hacer solo para conectarse a la pantalla de una computadora remota es simplemente ridícula. En Windows, simplemente funciona ... con unos pocos clics del mouse, aunque la función de escritorio remoto solo funciona en ediciones costosas. He pasado algunas horas y todavía no puedo hacer que VNC se inicie automáticamente. Esta es la razón por la cual Linux seguirá siendo un sistema operativo impopular para los usuarios promedio ... (Por favor, no señale cosas como "¡Linux se usa en Android!" O algo así. Las palabras tienen diferentes significados en diferentes contextos. Sabes a qué me refiero con "Linux" contexto.)
Malditas verduras

Respuestas:


43

Las respuestas anteriores resuelven el problema, aunque un par de enmiendas para versiones de Ubuntu con systemd (15.04+), de la siguiente manera:

  • Aproveche la nueva -auth guessfuncionalidad en x11vnc, ¡lo cual ayuda!
  • Actualización para systemd (no inicial)

Ejecute lo siguiente para instalar:

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

Inserte esto en el archivo:

[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

Luego, comience con:

sudo systemctl daemon-reload
sudo systemctl start x11vnc

Y asegúrese de que el servicio se inicie en el arranque:

sudo systemctl enable x11vnc

Se hizo referencia a bbs.archlinux.org/viewtopic.php?id=168756 para obtener algunos consejos sobre los parámetros de Requiere / Después
babelmonk

2
¿Por qué esta respuesta no está marcada como la respuesta correcta?
Cybex

1
Si no hay una pantalla en absoluto, entonces uno puede querer establecer la resolución arbitraria: sudo xrandr --fb 1920x1080.
Oriente

2
No es un hecho, x11vnc funcionará de inmediato. Sería una buena idea proporcionar un comando de prueba antes de comprometerse con un servicio que se reinicia en caso de falla cada 2 segundos. Estoy usando lightdm y xfce4 en un servidor Ubuntu 17.10 en la nube sin cabeza. Restart-secdebería serRestartSec
Ray Foss

1
Ubuntu 18.04 también parece querer en RestartSeclugar de Restart-sec.
Scott Willeke

43

Instalar x11vnc:

sudo apt-get install x11vnc

Crea una contraseña para tu usuario:

x11vnc -storepasswd

Si tiene una configuración ssh, puede usarla para iniciar x11vnc, suponiendo que ya haya iniciado sesión, pero recuerde decirle que use su archivo de contraseña:

x11vnc -usepw

Si no ha iniciado sesión, recibirá un error con la explicación:

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

Suponiendo que está utilizando lightdm para iniciar sesión, puede solucionar este problema, puede iniciar x11vnc con el comando:

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

No estoy seguro de que esta sea la mejor idea para ejecutar x11vnc como root. Tal vez alguien podría editar con una forma de acceder al inicio de sesión sin usar sudo.

Una vez que esto se esté ejecutando, debería poder conectarse utilizando un cliente vnc como krdc (para KDE). Es posible que desee utilizar la pantalla GNU para mantener x11vnc funcionando sin necesidad de abrir la sesión ssh

Pude resolver esto usando http://ubuntuforums.org/showthread.php?t=2039022 .

Aquí hay un ejemplo de trabajo inicial que puede usar para que se ejecute al inicio. Debe colocarse en /etc/init/x11vnc.conf. (Tenga en cuenta que las versiones más nuevas de Ubuntu usan systemd, así que vea la otra respuesta que tiene una configuración de systemd de muestra):

# 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

Una vez que haya creado este archivo, puede iniciarlo ejecutando: sudo start x11vnc Puede consultar el registro en: /var/log/upstart/x11vnc.log


1
Puedes correr x11vnccomo un usuario normal, no hay problema. Por ejemplo: ssh al host y ejecutar x11vnc -safer -forever -display :0 2>&1 &en una sesión tmux (buena práctica), se ejecutará bajo $USER.
Terry Wang

Además, es sólo para referencia, con el fin de cambiar el área de visualización: superuser.com/questions/270608/...
Wtower

2
Esto no explica cómo hacer que se inicie automáticamente según lo solicitado (y es un requisito común para dicha función)
LovesTha

1
Consulte aquí para obtener una lista completa de las opciones de x11vnc. Me llevó mucho tiempo encontrar esto: karlrunge.com/x11vnc/x11vnc_opts.html
Gabriel Staples

1
Y vea aquí un excelente tutorial sobre cómo configurar esto en una Raspberry Pi con inicio automático en el arranque: megaleecher.net/Raspberry_Pi_VNC_Setup
Gabriel Staples

14

Así es cómo:

  1. Instale el servidor X11VNC (o a través del Centro de software de Ubuntu -> Servidor X11VNC)

    sudo apt-get install x11vnc
    
  2. Crea un archivo de contraseña VNC.

    sudo x11vnc -storepasswd yourVNCpasswordHERE /etc/x11vnc.pass
    
  3. Cree un archivo de trabajo en el editor nano (o gedit, leafpad, etc.).

    sudo nano /etc/init/x11vnc.conf
    
  4. Pegue esto en el archivo:

    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. Guarda el archivo. Creó un trabajo para el evento Upstart login-session-start .

  6. Reinicia Ubuntu.

¡Eso es! Ahora debería poder conectarse con cualquier cliente VNC incluso antes de iniciar sesión.


Pero, ¿cómo hace que funcione cuando lightdm no crea el archivo de autenticación hasta que se conecta un monitor?
LovesTha

@didibus He intentado hacer esto en Lubuntu, pero x11vncno se inicia automáticamente cada vez. Ni siquiera comenzará como un servicio, para el caso. La sintaxis del archivo es correcta y puedo comenzar x11vncdesde el shell muy bien. ¿Qué me estoy perdiendo?
linuxgringo

Esto también funciona en Lubuntu. Específicamente, la versión de LeMaker de Lubuntu para Banana Pi.
AaronD

3

babelmonks responde como un script bash, copia y guarda como x11vnc.sh y ejecuta con sudo bash /path/to/file/x11vnc.sh (lo siento, no tengo suficiente representante para publicar un comentario)

#!/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 desea mejorar otra respuesta, sugiérale que la edite y no cree una nueva respuesta.
David Foerster

Felizmente agregaré esto a la mía si desea crear una edición @ nix-badweasel
babelmonk


1

Aquí hay una configuración para sddm(para KDE 5). Actualmente, -auth guessno funciona para sddm, el archivo de autenticación es diferente cada vez, por lo que necesitamos algo así -auth /var/run/sddm/*. El servicio se ve así,

[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

Tengo que ponerlo después multi-user.target, si después display-manager.service, x11vncno puedo encontrar el archivo de autenticación, tal vez sddmgenere el archivo de autenticación más tarde. Esto se prueba en Manjaro 18.


0

Yo uso mi propio 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

en el archivo:

/etc/init/x11vnc.conf

Hace que se inicie automáticamente en el arranque, incluso en la pantalla de inicio de sesión solicita una contraseña.


0

Instalar el paquete x11vnc

#sudo apt-get install x11vnc

Luego configura la contraseña

#x11vnc -usepw

Luego cree un script de inicio para x11vnc

#sudo nano /etc/x11vnc.sh

En archivo:

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

Entonces guardar

#sudo chmod 777 /etc/x11vnc.sh

Luego agregue el archivo de secuencia de comandos al Centro de control => Aplicación de inicio Luego haga clic en Agregar

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

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

> Comment------service

Esto es necesario para agregar a todos los usuarios

Esto se ejecutará solo después de iniciar sesión

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.