Blog (ang. web log dziennik sieciowy) — rodzaj strony internetowej zawierającej określoną liczbę odrębnych, samodzielnych, uporządkowanych chronologicznie wpisów, których twórcą jest właściciel bloga. Blogi umożliwiają zazwyczaj archiwizację oraz kategoryzowanie wpisów, a także komentowanie wpisów przez czytelników danego bloga. Ogół blogów traktowany jako medium komunikacyjne nosi nazwę blogosfery. [źródło: wikipedia]

Pulpit zdalny przez SSH

W czym rzecz...

Zdalna administracja komputera działającego pod systemem Linux czy Windows za pomocą VNC jest prosta i praktyczna. Jedynym minusem jest bezpieczeństwo połączenia. Jeśli połączenie ma miejsce wewnątrz zamkniętej sieci lokalnej, to problem ten nie istnieje. Sprawa wygląda inaczej, jeśli między serwerem a klientem jest Internet. Połączenie nieszyfrowane w łatwy sposób może zostać podsłuchane, a nasz komputer może stać się obiektem ataków itp.

Rozwiązanie jest bardzo proste i skuteczne, a jest nim tzw tunel SSH.

Po stronie serwera potrzebny jest komputer z zainstalowanym serwerem SSH, publicznym numerem IP i zainstalowanym serwerem VNC.

Po stronie klienta może być dowolny komputer/palmtop, z zainstalowanymi klientami SSH i VNC. W przypadku klienta adres IP nie jest istotny (przynajmniej na podstawie moich doświadczeń).

Krok pierwszy...

...czyli instalacje aplikacji serwerowych SSH i VNC odłożę sobie na później. W większości dystrybucji systemu LINUX są one domyślnie zainstalowane, więc nawet jeśli Użytkownik komputera nie wiedział o ich istnieniu, to są duże szanse, że ma te aplikacje zainstalowane. Jeśli jest inaczej to wystarczy dodać SSHD i VNCSERVER przez menadżera pakietów danego systemu.


Krok drugi - konfiguracja serwera VNC

Spokojnie mogą ten krok pominąć osoby, które z administracją przez VNC się już spotkały.

Serwer VNC tworzy wirtualny pulpit wg uznania użytkownika (co prawda jest możliwe podłączenie się pod istniejący pulpit wykorzystywany do codziennej pracy, ale jest to moim zdaniem nieefektywne rozwiązanie). Przy pierwszym uruchomieniu vncserver, należy nadać hasło dla połączeń ze zdalnym pulpitem. W katalogu domowym Użytkownika:
/home/nazwa_uzytkownika
zostanie utworzony katalog:
.vnc
w którym to znajdują się pliki passwd (przechowywujący hasło do serwera) i xstartup, za pomocą którego można wstępnie skonfigurować pulpit. Domyślnym menadżerem okien jest TWM, pozbawiony jakichkolwiek niepotrzebnych dodatków. Osobiście preferuję blackbox, który jest mniej toporny. Zmiany menadżera okien dokonujemy edytując plik xstartup w katalogu .vnc .

#!/bin/sh

xrdb $HOME/.Xresources
xsetroot -solid grey
xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
blackbox &


Wybór menedżera zależy wyłącznie od preferencji użytkownika (osoba korzystająca na co dzień z GNOME może zamiast Blackbox czy TWM wpisać metacity, czyli domyślny menadżer okien GNOME). Nie muszę chyba dodawać, że żeby przykładowy Blackbox zadziałał, musi być wcześniej zainstalowany.

xterm wystepujący w pliku xstartup jest domyślną linuxową powłoką graficzną, dzięki której niepotrzebny jest jakikolwiek panel czy menu. Każde polecenie można w systemie LINUX wywołać za pomocą powłoki.

Wirtualny pulpit z działającym xterm i menedżerem okien metacity:


Serwer VNC uruchamiamy poleceniem:
vncserver :3 -geometry 800x600
gdzie :3 jest numerem ekranu (ang display), który ma być utworzony (musi to być liczba większa od 0), a -geometry 800x600 określa szerokość pulpitu na 800 pikseli a wysokość na 600 pikseli.

Po co definiować wielkość wirtualnego pulpitu?

Krok trzeci
czyli jak sprawa się ma po stronie komputera-klienta...

Podstawową kwestią, która bezpośrednio związana jest z definiowaniem wielkości pulpitu jest rozdzielczość komputera, za pomocą którego chcemy połączyć się ze wspomnianym pulpitem.

Prostym przykładem może być palmtop. Dostępne na rynku mają w większości rozdzielczość ekranu w granicach 320x320 pikseli. Katorgą więc byłaby praca z wirtualnym pulpitem (np 1280x1024) kilkakrotnie większym od fizycznego.

Wracamy do SSH. Na komputerze-kliencie może być dowolny system operacyjny od PalmOS do MacOS. Wystarczy, że ma zainstalowane klienty SSH (np Windows'owy Putty) i VNC (UltraVNC pod Windows). Ja skoncentruje się jednak na systemie LINUX (w innych systemach sprawa wygląda analogicznie).

Poleceniem
ssh -l nazwa_uzytkownika adres_naszego_serwera
klient ssh łączy się z naszym serwerem. adres_naszego_serwera to po prostu adres IP komputera, z którym się łączymy. nazwa_uzytkownika jest nazwą użytkownika istniejącego w zdalnym komputerze. Po wywołaniu tego polecenia zostanie wyświetlona prośba o hasło. Po poprawnym zalogowaniu pojawi się:
Last login: DD MM dd HH:mm:SS YYYY from adres_klienta
Have a lot of fun...
nazwa_uzytkownika@adres_naszego_serwera:~>
Jest to wiersz poleceń zdalnego komputera (serwera). Można w tym momencie przeglądać zawartość zdalnego komputera i uruchamiać podstawowe programy konsolowe. Nie jest możliwe uruchomienie programów w trybie graficznym.

SSH umożliwia transportowanie grafiki z serwera do klienta bez pomocy VNC - jest to jednak mało efektywna metoda. Poświęcę jej osobny temat.

Żeby zamknąć połączenie SSH wystarczy wpisać exit po czym nastąpi wylogowanie ze zdalnego komputera.

W celu utworzenia tunelu dla VNC należy połączyć się z serwerem SSH poleceniem wzbogaconym o pewną opcję:
ssh -l uzytkownik -2 -L 5901:localhost:5901 adres_naszego_serwera
opcja -2 wymusza SSH2, -L 5901:localhost:5901 otwiera tunel na porcie 5901 po stronie serwera i klienta. Domyślnym portem dla połączeń VNC jest 5900, w tym wypadku ostatnie zero oznacza ekran (display) :0 (domyślny w przypadku Windows, w LINUX zastrzeżony dla pulpitu działającego na monitorze komputera). Użyty powyżej port 5901 oznacza ekran (display) :1

W tym momencie po podaniu hasła i poprawnym zalogowaniu się pozostało już tylko uruchomić serwer VNC na komputerze zdalnym. Żeby to zrobić wpisuje się w konsoli uzyskanej za pomocą ssh polecenie:
vncserver :1 -geometry 800x600

Rozmiar pulpitu dobieramy wg uznania, natomiast display (:1) ustawiamy zgodnie z portem tunelowanym (5901)

Wynikiem powyższego polecenia będzie coś takiego:
New 'X' desktop is adres_naszego_serwera:1

Starting applications specified in /home/użytkownik/.vnc/xstartup
Log file is /home/użytkownik/.vnc/adres_naszego_serwera:1.log
Teraz wystarczy uruchomić klienta VNC - przykładowo w LINUX poleceniem
vncviewer localhost:1
Po wpisaniu poprawnego hasła ukaże się okno jak w Kroku drugim.

W zależności od łącza internetowego można ustawić róźne głębie kolorów i rodzaje kompresji obrazu.