W uzupełnieniu do poprzedniego artykułu o VNC opis innego zastosowania - podpinanie się do normalnej sesji czyli np. zaglądanie z laptopa do głównej sesji na desktopie. Albo zaglądanie co robi żona, kolega, czy inny zwykły user i z czym ma problemy.
Znowu, zacznę od opisu funkcjonalności.
Funkcjonalność
Mamy tutaj normalny desktop z otwartą sesją i chcemy się do niego dobrać zdalnie. Na przykład, na zahasłowanym komputerze w biurze zostały otwarte programy, chcę zdalnie zrobić jakiś zapomniany drobiazg przy ich pomocy zamiast odbudowywać całe środowisko na innej maszynie. Albo zapisać plik, który pozostał niezapisany w edytorze. Albo sprawdzić, czy jakieś przetwarzanie się skończyło. Albo zobaczyć jaki błąd dostaje kolega.
Główna niedogodność tego mechanizmu: różnice w rozdzielczości. Podgląd sesji na LCD 1600x1050 z laptopa 1024x768 działa ale jest mało komfortowy (do wyboru scrollowanie albo nieczytelne skalowanie). Z tej właśnie przyczyny do regularniejszej pracy z laptopa może się przydawać technika drugiej sesji wspominana w poprzednim artykule.
Inna niedogodność: ktoś kto usiądzie przy fizycznym monitorze (np. w biurze) będzie widział co robimy i miał możliwość użycia naszych programów. W szczególności jeśli w opisany tu sposób odblokujemy zablokowaną sesję, stanie się ona dostępna dla osoby siadającej przy biurku.
Instalacja
Na serwerze (tj. maszynie, do której chcemy się dostawać) instalujemy x11vnc
.
$ sudo apt-get install x11vnc
Od razu po instalacji ustawiamy hasło zabezpieczające (trzeba to zrobić z konta użytkownika, do którego sesji będziemy się dobierać):
$ x11vnc -storepasswd ~/.vnc/password
(i wpisujemy hasło).
Na kliencie instalujemy jakiegoś klienta VNC, np. TightVNC (przy niezabezpieczonej sieci wygodne może być ssvnc, które pomaga dostawić tunel SSH lub SSL - przypomnę ponownie że protokół VNC nie jest bezpieczny, może zostać podsłuchany).
Uruchamianie na żądanie
Logujemy się jakoś na docelową maszynę (zwykle ssh przy użyciu jakiegoś terminala) i uruchamiamy:
$ x11vnc --usepw --auth $HOME/.Xauthority --display :0
Parametr display
oznacza numer (fizycznego) ekranu, zwykle :0 ale jeśli mamy kilka sesji (Ctrl-Alt-F8 itd),
może być :1 czy :2.
Podobnie jak było to w przypadku serwera VNC, program będzie nasłuchiwał na jakimś porcie
TCP. W powyższym wariancie poszuka pierwszego wolnego począwszy od 5900 (i wypisze na ekranie
informację na jakim porcie działa). Można to skorygować opcją autoport
, np.
--autoport=5905
znajdzie pierwszy wolny port począwszy od 5905. Program wypisze sporo niepotrzebnych informacji i następującą ważną:
The VNC desktop is: pluto:5
PORT=5905
jest to odpowiednio adres do wprowadzenia w kliencie VNC (tu: pluto:5
) i wykorzystywany port TCP (tu 5905
).
Program x11vnc
pozostawiamy uruchomiony, podglądanie sesji będzie możliwe tak długo, jak długo działa.
Dostęp
Na maszynie klienckiej instalujemy viewer. Na Windows może to być TightVNC, pod Linuxem ten sam program albo VncViewer:
$ sudo apt-get install tightvncviewer
$ sudo apt-get install xvnc4viewer
i przy okazji
$ sudo apt-get install tsclient
(graficzny wrapper uruchamiający viewer z odpowiednimi parametrami).
A potem po prostu uruchamiamy. Na Windows - podając w wyświetlonym oknie z pytaniem o adres
nasze pluto:5
(odpowiednio do informacji wypisanej przez startujący x11vnc
). Na Linuxie robiąc
to samo w uruchomionym tsclient
(Programy/Internet/Klient Usług Terminalowych jeśli ktoś ma menu
Ubuntu Gnome i woli klikać) albo z palca startując
$ vncviewer pluto:5
I tyle.
Efekt może być następujący (tu desktop Linuxowy dostępny w oknie Windowsowego laptopa):
Konfiguracja leniwa
Jeśli korzystamy z takiego rozwiązania często, a nasza sieć jest zabezpieczona, można zautomatyzować
uruchamianie x11vnc
. Najprościej jest wrzucić do autostartu Gnome czy KDE (celowo właśnie tu, by
uruchamiał się z ustawioną zmienną DISPLAY i XAUTHORITY) polecenie podobne do:
$ x11vnc --usepw --autoport 5907 --forever
(autoport
zwiększa szansę, że ten port będzie dostępny, 5900 możemy złapać ad hoc).
Opcja --forever
pozwala na wielokrotne podłączanie, bez niej x11vnc
obsługuje tylko jednego klienta
i kończy się gdy on się rozłączy.
Wielodostęp
Podobnie jak w przypadku serwera jest też do dyspozycji opcja:
--shared
Jest też:
--viewonly
które pozwala im tylko patrzeć, bez aktywnych możliwości.
Wariant
x11vnc --shared --viewonly --forever
(bez hasła) to także sposób na ... prezentację. Oglądający mogą klientami VNC obserwować co robimy na naszym desktopie.