7.16.3. Tunelowanie połączeń VNC

Program ssh można także wykorzystać do tunelowania protokołu VNC. Jeśli na docelowym komputerze serwer VNC wykorzystuje port 5900, to logujemy się na niego podając do ssh opcję -L 5900:localhost:5900:

ssh -L 5900:localhost:5900 user@host
Jeśli musimy logować się "na kilka razy" (przez kilka komputerów pośrednich), opcję tą podajemy za każdym razem. Mamy teraz uruchomiony tunel dla połączeń VNC.

Na docelowym komputerze uruchamiamy serwer VNC. Przykładowo, aby podłączyć się do działającej sesji użytkownika user, musimy mieć na zdalnym komputerze zainstalowany pakiet x11vnc i wydać polecenie:

x11vnc -localhost -auth /home/user/.Xauthority
Opcja -auth ze ścieżką do pliku .Xauthority użytkownika jest potrzebna tylko jeżeli wydajemy polecenie jako inny użytkownik niż ten, do którego sesji chcemy się podłączyć. Ma to sens główne dla użytkownika root, gdyż inni i tak nie będą mieli praw odczytu do pliku .Xauthority.

Jeżeli chcemy się podłączyć do sesji menedżera logowania (np. kdm), czyli w sytuacji jeśli żaden użytkownik nie jest zalogowany, parametr do opcji -auth powinien wskazywać na plik "Cookie" menedżera logowania, np. /var/run/xauth/XXXX, gdzie zamiast XXXX występuje ciąg losowych znaków. Lokalizację pliku można często zobaczyć przez wydanie polecenia:

ps axw | grep auth

Ostatnim krokiem jest uruchomienie lokalnie klienta VNC, podając adres lokalny i numer portu 5900 - localhost:5900. Na przykład w przypadku program krdc adres ten musimy wpisać po uruchomieniu programu, inni klienci VNC mogą wymagać podania go w linii poleceń.