W innym artykule opisałem jak skonfigurować zdalny dostęp do konsoli graficznej naszego Linuxa. W takim przypadku tworzone są wirtualne sesje terminala graficznego GUI. Pozostaje jednak problem: jak dostać się do głównego okna terminala graficznego? Tego okna, które widzimy na monitorze podłączonym do komputera z Linuxem. Rozwiązaniem jest program: x11vnc
Instalacja
Instalacja jest prosta: zatrzymujemy pracujące sesje vnc
vncserver -kill :x
Gdzie x to numer sesji. Kolejno instalacja x11vnc:
sudo apt update sudo apt install x11vnc
Konfiguracja i uruchomienie
Po instalacji generujemy hasło:
x11vnc -storepasswd
Zapisze się ono do pliku ~/.vnc/passwd – ten sam jak tightvncserver. Jeśli chcesz to możesz podać też lokalizację pliku z hasłem:
x11vnc -storepasswd /sciezka/do/plikuhasla
Kolejno uruchamiamy usługę zdalnego puplitu:
sudo x11vnc -auth guess -forever -loop -noxdamage -repeat -rfbauth $HOME/.vnc/passwd -rfbport 5900 -shared -ncache -ncache_cr
Powyższe polecenia otworzy program x11vnc z konta aktualnego użytkownika, zatem hasło zostanie pobrane z jego konta – zmienna $HOME skieruje do katalogu domowego aktualnego użytkownika. Otwiera się konsola programu x11nvc, w której pojawiają się różne informacje o pracy programu.
Jak widać mamy tu wiele opcji, które możemy zmienić. Najważniejsze to plik z hasłem oraz numer portu na jakim program nasłuchuje żądań. Domyślnie to 5900 i tak możemy zostawić ponieważ różne VNCserwery zazwyczaj korzystają z portów od 5901. Ten sposób uruchomienia wymaga otwartego okna z konsolą x11vnc. Najlepiej do tego użyć screen albo tmux, gdzie mamy wirtualne okno w terminalu. Taka opcja będzie bardzo pomocna gdy łączymy się do naszego Linuxa najpierw po ssh. W tym przypadku screen/tmux jest koniecznością ponieważ w razie zamknięcia okna z ssh (np. putty) program x11vnc zostanie także zamknięty jak i nasze połączenie do GUI. Aby program uruchomić w tle użyć należy opcji -bg, w takim przypadku po uruchomieniu programu można zamknąć okno terminala.
Zdalne połączenie
Teraz łączymy się na zdalny i główny pulpit graficzny za pomocą np. VNCViewer
Po wprowadzeniu hasła (kwestia szyfrowania to inna sprawa, ale większość tego typu połączeń nie jest szyfrowana i trzeba sobie to zrobić samemu za pomocą np. tunelu ssh).
Uruchomienie jako usługa
Program x11vnc można także uruchamiać wraz ze startem systemu jako usługę systemd.
Tworzymy nowy plik usługi
sudo nano /etc/systemd/system/x11vnc.service
Wstawiamy do niego poniższe polecenia
[Unit] Description=Serwer x11vnc (Glowne okno) After=display-manager.service [Service] Type=forking ExecStart=/usr/bin/x11vnc -auth guess -forever -loop -noxdamage -repeat -rfbauth /home/__USER__/.vnc/passwd -rfbport 5900 -shared -bg Restart=on-failure RestartSec=10 [Install] WantedBy=multi-user.target
Plik zapisujemy. W polu __USER__ trzeba wpisać konto na jakim jest ustawione hasło (plik z hasłem). Także port może wymagać zmiany na inny. Usługę teraz trzeba ustawić do uruchamiania się automatycznie. Teraz czas na przeładowanie systemd
sudo systemctl daemon-reload sudo systemctl enable x11vnc sudo systemctl start x11vnc
Dzięki temu usługa zdalnego pulpitu (na główny pulpit) będzie oczekiwała na połączenia zawsze automatycznie po starcie systemu. Jeśli zajdzie potrzeba wyłączenia usługi:
sudo systemctl stop x11vnc
Stan usługi sprawdzimy za pomocą polecenia:
sudo systemctl status x11vnc
.



