Come configurare x11vnc per accedere con la schermata di accesso grafica?


50

Ho un server che esegue Ubuntu 12.10 e devo essere in grado di remotare su questo server senza essere loggato.

Ho trovato molte soluzioni, ma nessuna sembra funzionare con 12.10.

Qualcuno può darmi istruzioni dettagliate su come configurare x11vncl'avvio come servizio (prima dell'accesso dell'utente) in modo che durante la connessione a VNC mi venga presentata una schermata di accesso grafica?

Sono nuovo di Linux, quindi ti preghiamo di fornire quanti più dettagli possibili nelle tue risposte / commenti.

Grazie


1
La quantità di tutti questi comandi e configurazioni che un utente medio deve fare solo per connettersi allo schermo di un computer remoto è semplicemente ridicola. Su Windows, funziona solo con pochi clic del mouse, sebbene la funzionalità desktop remoto funzioni solo su costose edizioni. Ho trascorso alcune ore e non riuscivo ancora ad avviare automaticamente VNC. Questo è il motivo per cui Linux rimarrà un sistema operativo impopolare per gli utenti medi ... (Per favore, non indicare cose come "Linux è usato in Android!" O qualcosa del genere. Le parole hanno significati diversi in contesti diversi. Sai cosa intendo "Linux" in questo contesto.)
Damn Vegetables,

Risposte:


43

Le risposte di cui sopra risolvono il problema, anche se un paio di modifiche per le versioni di Ubuntu con systemd (15.04+), come segue:

  • Approfitta delle nuove -auth guessfunzionalità in x11vnc - che aiuta!
  • Aggiornamento per systemd (non upstart)

Eseguire quanto segue per installare:

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

Inserisci questo nel file:

[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

Quindi, inizia con:

sudo systemctl daemon-reload
sudo systemctl start x11vnc

E assicurati che il servizio venga avviato all'avvio:

sudo systemctl enable x11vnc

Referenziato bbs.archlinux.org/viewtopic.php?id=168756 per alcuni consigli sui parametri
Requis

2
perché questa risposta non è contrassegnata come la risposta corretta?
Cybex,

1
Se non v'è alcuna esposizione a tutti, allora uno potrebbe voler impostare la risoluzione arbitraria: sudo xrandr --fb 1920x1080.
Orienta il

2
Non è un dato di fatto che x11vnc funzionerà immediatamente. Sarebbe una buona idea fornire un comando di test prima di passare a un servizio che si riavvia in caso di errore ogni 2 secondi. Sto usando lightdm e xfce4 su un server Ubuntu 17.10 cloud senza testa. Restart-secdovrebbe essereRestartSec
Ray Foss il

1
Anche Ubuntu 18.04 sembra voler RestartSecpiuttosto che Restart-sec.
Scott Willeke,

43

Installa x11vnc:

sudo apt-get install x11vnc

Crea una password per il tuo utente:

x11vnc -storepasswd

Se hai ssh setup puoi usarlo per avviare x11vnc supponendo che tu abbia già effettuato l'accesso, ma ricorda di dirgli di usare il tuo file password:

x11vnc -usepw

Se non si è effettuato l'accesso, verrà visualizzato un errore con la spiegazione:

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

Supponendo che tu stia usando lightdm per il login puoi risolvere questo problema, puoi avviare x11vnc con il comando:

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

Non sono sicuro che questa sia l'idea migliore per eseguire x11vnc come root. Forse qualcuno potrebbe modificare con un modo per accedere al login senza usare sudo.

Una volta eseguito, dovresti essere in grado di connetterti usando un client vnc come krdc (per KDE). Potresti voler usare GNU Screen per mantenere x11vnc in esecuzione senza aver bisogno della sessione ssh aperta

Sono stato in grado di capirlo usando http://ubuntuforums.org/showthread.php?t=2039022 .

Ecco un esempio di processo di avvio che è possibile utilizzare per eseguirlo all'avvio. Deve essere inserito in /etc/init/x11vnc.conf. (Nota che le versioni più recenti di Ubuntu usano systemd, quindi vedi l'altra risposta che ha un esempio di configurazione di 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

Una volta creato questo file, puoi avviarlo eseguendo: sudo start x11vnc Puoi controllare il registro su: /var/log/upstart/x11vnc.log


1
È possibile eseguire x11vnccome utente normale, nessun problema. Ad esempio: ssh per l'host ed eseguire x11vnc -safer -forever -display :0 2>&1 &in una sessione tmux (buona pratica), verrà eseguito sotto $USER.
Terry Wang,

Inoltre, solo per riferimento, al fine di modificare il viewport: superuser.com/questions/270608/…
Wtower,

2
Questo non spiega come avviarlo automaticamente come richiesto (ed è un requisito comune per tale funzione)
LovesTha

1
Vedi qui per un elenco completo delle opzioni x11vnc. Mi ci è voluto molto tempo per trovare questo: karlrunge.com/x11vnc/x11vnc_opts.html
Gabriel Staples

1
E guarda qui per un eccellente tutorial su come configurarlo su un Raspberry Pi con avvio automatico all'avvio: megaleecher.net/Raspberry_Pi_VNC_Setup
Gabriel Staples

14

Ecco come:

  1. Installa il server X11VNC (o tramite Ubuntu Software Center -> X11VNC Server)

    sudo apt-get install x11vnc
    
  2. Crea un file password VNC.

    sudo x11vnc -storepasswd yourVNCpasswordHERE /etc/x11vnc.pass
    
  3. Creare un file di lavoro nell'editor nano (o gedit, leafpad ecc.).

    sudo nano /etc/init/x11vnc.conf
    
  4. Incollalo nel file:

    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. Salva il file. È stato creato un lavoro per l'evento Upstart login-session-start .

  6. Riavvia Ubuntu.

Questo è tutto! Ora dovresti essere in grado di connetterti con qualsiasi client VNC anche prima dell'accesso.


Ma come si fa a farlo funzionare quando lightdm non crea il file auth finché non viene collegato un monitor?
Ama il

@didibus Ho provato a farlo in Lubuntu, ma x11vncnon riesco ad avviarlo automaticamente ogni volta. Non inizierà nemmeno come servizio, del resto. La sintassi del file è corretta e posso iniziare bene x11vncdalla shell. Cosa mi sto perdendo?
Linuxgringo,

Questo funziona anche su Lubuntu. Nello specifico, la versione di LeMaker di Lubuntu per Banana Pi.
AaronD

3

babelmonks risponde come uno script bash, copia e salva come x11vnc.sh ed esegue con sudo bash /path/to/file/x11vnc.sh (scusate non ho abbastanza rappresentante per pubblicare un commento)

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

Se vuoi migliorare un'altra risposta, ti preghiamo di suggerire una modifica e non creare una nuova risposta.
David Foerster,

Aggiungerò felicemente questo al mio se desideri creare un edit @ nix-badweasel
babelmonk,


1

Ecco una configurazione per sddm(per KDE 5). Attualmente, -auth guessnon funziona sddm, il file auth è ogni volta diverso, quindi abbiamo bisogno di qualcosa di simile -auth /var/run/sddm/*. Il servizio sembra,

[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

Devo metterlo dopo multi-user.target, se dopo display-manager.service, x11vncnon riesco a trovare il file auth, forse sddmgenera il file auth in seguito. Questo è testato su Manjaro 18.



0

Installa il pacchetto x11vnc

#sudo apt-get install x11vnc

Quindi impostare la password

#x11vnc -usepw

Quindi creare lo script di avvio per x11vnc

#sudo nano /etc/x11vnc.sh

Nel file:

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

Quindi salva

#sudo chmod 777 /etc/x11vnc.sh

Quindi aggiungere il file di script a Control Center => Applicazione di avvio, quindi fare clic su Aggiungi

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

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

> Comment------service

Questo è necessario per essere aggiunto per tutti gli utenti

Questo verrà eseguito solo dopo l'accesso dell'utente

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.