Jak skonfigurować x11vnc, aby uzyskać dostęp za pomocą graficznego ekranu logowania?


50

Mam serwer z systemem Ubuntu 12.10 i muszę mieć możliwość zdalnego dostępu do tego serwera bez zalogowania się.

Znalazłem wiele rozwiązań, ale żadne nie wydaje się współpracować z 12.10.

Czy ktoś może podać mi instrukcje krok po kroku, jak skonfigurować x11vncuruchamianie jako usługa (przed zalogowaniem użytkownika), aby podczas łączenia się z VNC wyświetlał mi się graficzny ekran logowania?

Jestem nowy w Linuksie, więc podaj jak najwięcej szczegółów w swoich odpowiedziach / komentarzach.

Dzięki


Liczba wszystkich tych poleceń i konfiguracji, które przeciętny użytkownik musi wykonać, aby połączyć się z ekranem komputera zdalnego, jest po prostu absurdalna. W systemie Windows działa tylko ... za pomocą kilku kliknięć myszą, chociaż funkcja pulpitu zdalnego działa tylko w drogich wersjach. Spędziłem kilka godzin i nadal nie mogłem uruchomić VNC automatycznie. Właśnie dlatego Linux pozostanie niepopularnym systemem operacyjnym dla przeciętnych użytkowników ... (Proszę nie wskazywać rzeczy takich jak „Linux jest używany w Androidzie!” Czy coś takiego. Słowa mają różne znaczenia w innym kontekście. Wiesz, co „Linux” mam na myśli w tym kontekst.)
Cholerne warzywa,

Odpowiedzi:


43

Zainstaluj x11vnc:

sudo apt-get install x11vnc

Utwórz hasło dla swojego użytkownika:

x11vnc -storepasswd

Jeśli masz konfigurację ssh, możesz jej użyć do uruchomienia x11vnc, zakładając, że jesteś już zalogowany, ale pamiętaj, aby powiedzieć mu, aby używał pliku hasła:

x11vnc -usepw

Jeśli nie jesteś zalogowany, pojawi się błąd z wyjaśnieniem:

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

Zakładając, że używasz lightdm do logowania, możesz rozwiązać ten problem, możesz uruchomić x11vnc za pomocą polecenia:

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

Nie jestem pewien, czy to najlepszy pomysł na uruchomienie x11vnc jako root. Może ktoś mógłby edytować sposób dostępu do logowania bez korzystania z sudo.

Po uruchomieniu powinieneś być w stanie połączyć się za pomocą klienta vnc, takiego jak krdc (dla KDE). Możesz użyć GNU Screen, aby x11vnc działało bez potrzeby otwierania sesji ssh

Udało mi się to rozgryźć za pomocą http://ubuntuforums.org/showthread.php?t=2039022 .

Oto przykładowe zadanie upstart, którego możesz użyć do uruchomienia go podczas uruchamiania. Musi być umieszczony w /etc/init/x11vnc.conf. (Uwaga: nowsze wersje Ubuntu używają systemd, więc zobacz inną odpowiedź, która ma przykładową konfigurację 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

Po utworzeniu tego pliku możesz go uruchomić, uruchamiając: sudo start x11vnc Możesz sprawdzić dziennik pod adresem: /var/log/upstart/x11vnc.log


1
Możesz działać x11vncjako zwykły użytkownik, bez problemu. Na przykład: ssh na hoście i uruchom x11vnc -safer -forever -display :0 2>&1 &w sesji tmux (dobra praktyka), będzie działał pod $USER.
Terry Wang

Również w celach informacyjnych, aby zmienić rzutnię: superuser.com/questions/270608/...
Wtower,

2
To nie wyjaśnia, jak
ustawić

1
Zobacz tutaj pełną listę opcji x11vnc. Znalezienie tego zajęło mi dużo czasu: karlrunge.com/x11vnc/x11vnc_opts.html
Gabriel Staples

1
I zobacz tutaj doskonały poradnik na temat konfigurowania tego na Raspberry Pi z automatycznym startem przy starcie systemu: megaleecher.net/Raspberry_Pi_VNC_Setup
Gabriel Staples

42

Powyższe odpowiedzi rozwiązują problem, choć kilka poprawek do wersji Ubuntu z systememd (15.04+), jak następuje:

  • Skorzystaj z nowej -auth guessfunkcjonalności w x11vnc - która pomaga!
  • Aktualizacja dla systemd (brak aktualizacji)

Uruchom następujące polecenie, aby zainstalować:

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

Wstaw to do pliku:

[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

Następnie zacznij od:

sudo systemctl daemon-reload
sudo systemctl start x11vnc

I upewnij się, że usługa uruchamia się przy rozruchu:

sudo systemctl enable x11vnc

Odwołuje bbs.archlinux.org/viewtopic.php?id=168756 o radę w sprawie Wymaga / Afters params
babelmonk

2
dlaczego ta odpowiedź nie jest oznaczona jako poprawna?
Cybex

1
Jeśli nie ma wyświetlacz w ogóle, to może chcieć, aby ustawić dowolną rozdzielczość: sudo xrandr --fb 1920x1080.
Orient

2
Nie jest pewne, że x11vnc będzie działać natychmiast. Dobrym pomysłem byłoby podanie komendy testowej przed uruchomieniem usługi, która uruchamia się ponownie po awarii co 2 sekundy. Używam lightdm i xfce4 na bezgłowym serwerze Ubuntu 17.10 w chmurze. Restart-secpowinno byćRestartSec
Ray Foss,

1
Wydaje się, że Ubuntu 18.04 RestartSecraczej tego chce Restart-sec.
Scott Willeke,

14

Oto jak:

  1. Zainstaluj serwer X11VNC (lub za pośrednictwem Centrum oprogramowania Ubuntu -> Serwer X11VNC)

    sudo apt-get install x11vnc
    
  2. Utwórz plik hasła VNC.

    sudo x11vnc -storepasswd yourVNCpasswordHERE /etc/x11vnc.pass
    
  3. Utwórz plik zadania w edytorze nano (lub gedit, leafpad itp.).

    sudo nano /etc/init/x11vnc.conf
    
  4. Wklej to do pliku:

    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. Zapisz plik. Utworzyłeś zadanie dla sesji logowania Upstart -start-sesja .

  6. Uruchom ponownie Ubuntu.

Otóż ​​to! Powinieneś być teraz w stanie połączyć się z dowolnym klientem VNC nawet przed zalogowaniem.


Ale jak to działa, gdy lightdm nie tworzy pliku auth, dopóki monitor nie zostanie podłączony?
LovesTha,

@didibus Próbowałem to zrobić w Lubuntu, ale x11vncza każdym razem nie uruchamia się automatycznie. W tym przypadku nawet nie zacznie się jako usługa. Składnia pliku jest poprawna i mogę zacząć x11vncod powłoki. czego mi brakuje?
linuxgringo

Działa to również na Lubuntu. W szczególności wersja Lubuntu firmy LeMaker dla Banana Pi.
AaronD,

3

babelmonks odpowiada jako skrypt bash, skopiuj i zapisz jako x11vnc.sh i uruchom z sudo bash /path/to/file/x11vnc.sh (przepraszam, nie mam wystarczająco dużo rep, aby opublikować komentarz)

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

Jeśli chcesz poprawić inną odpowiedź, zasugeruj jej zmianę i nie twórz nowej odpowiedzi.
David Foerster

Z przyjemnością dodam to do mojego, jeśli chcesz utworzyć edit @ nix-badweasel
babelmonk


1

Oto konfiguracja działa dla sddm(dla KDE 5). Obecnie -auth guessnie działa sddm, plik auth jest inny za każdym razem, więc potrzebujemy czegoś takiego -auth /var/run/sddm/*. Usługa wygląda jak

[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

Mam umieścić go po multi-user.target, czy po display-manager.service, x11vncnie może znaleźć auth plik, może sddmgeneruje plik auth później. Jest to testowane na Manjaro 18.


0

Używam własnej powłoki: 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

do pliku:

/etc/init/x11vnc.conf

To sprawia, że ​​uruchamia się automatycznie podczas rozruchu, nawet na ekranie logowania pyta o hasło.


0

Zainstaluj pakiet x11vnc

#sudo apt-get install x11vnc

Następnie ustaw hasło

#x11vnc -usepw

Następnie utwórz skrypt startowy dla x11vnc

#sudo nano /etc/x11vnc.sh

W pliku:

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

Następnie zapisz

#sudo chmod 777 /etc/x11vnc.sh

Następnie dodaj plik skryptu do Control Center => Aplikacja startowa, a następnie kliknij Dodaj

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

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

> Comment------service

Jest to wymagane, aby dodać dla wszystkich użytkowników

Uruchomi się to tylko po zalogowaniu użytkownika

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.