Technologia NX w praktyce

Co to jest NX? To technologia zdalnego dostępu do graficznego pulpitu, której autorem jest Gian Filippo Pinzari, i która jest obecnie rozwijana w jego firmie NoMachine. NX jest rozwiązaniem komercyjnym, jednak dzięki udostępnieniu newralgicznych fragmentów kodu na licencji GNU GPL, utworzono wolną implementację o nazwie FreeNX.

Zalety NX to:

  • dobra kompresja i cache’owanie danych, pozwalające pracować nawet na łączach modemowych, przy transferach 56,6 kb/s
  • wykorzystanie tunelu SSH i pary kluczy prywatny-publiczny podczas logowania i w trakcie sesji
  • możliwość uruchomienia całego pulpitu lub pojedynczej aplikacji
  • wydajne tunelowanie sesji RDP (zdalny pulpit Windows) i VNC

Podczas logowania klient NX łączy się z serwerem SSH, korzystając z konta użytkownika systemowego nx. Odbywa się to za pomocą pary kluczy. Po chwili następuje zalogowanie właściwego użytkownika, któremu zostaje udostępniona sesja X. Prosto i bezpiecznie.

Instalacja serwera na CentOS

W przypadku systemu CentOS, odpowiednie pakiety mamy dostępne w repo i instalujemy je poleceniem

# yum install nx freenx

Po zainstalowaniu dodajemy do serwera użytkowników, którym chcemy umożliwić dostęp via NX, np.

# nxserver --adduser uzytkowniknx

i ustawić im hasła

# nxserver --passwd uzytkowniknx

Tu musimy się na chwilę zatrzymać przy kwestii autoryzacji dostępu. Otóż może okazać się, że nasz użytkownik będzie mógł się zalogować także z innym hasłem, konkretnie tym używanym normalnie w systemie. Co gorsze, inni użytkownicy niż przed chwilą dodani do serwera, mogą też być autoryzowani po podaniu swoich linuksowych haseł. Aby temu zapobiec, przygotowujemy plik konfiguracyjny

# cd /etc/nxserver; cp node.conf.sample node.conf

i zmieniamy wpis w node.conf:

# This adds SSH to the possible authentication methods. For it to work sshd
# must be set up at localhost accepting password authentication.
ENABLE_SSH_AUTHENTICATION="0"

Odtąd serwer NX będzie autoryzował użytkowników na podstawie własnej bazy haseł.

Na koniec, jeżeli w konfiguracji daemona SSH korzystaliśmy z opcji AllowUsers, należy dopisać przy tej opcji w /etc/ssh/sshd_config użytkownika nx i tych, którzy mają mieć możliwość logowania via NX. U nas wyglądałoby to tak:

AllowUsers nx uzytkowniknx

Serwer uruchamiamy poleceniem

# nxserver --start

aczkolwiek możliwe, że uruchomi się automatycznie. Nie ma też chyba potrzeby dodawać go do usług na żadnym poziomie uruchamiania.

Przygotowanie klienta

Jeżeli klienta NX nie znajdziemy w repo naszej dystrybucji (nie znalazłem go w Debianie, ale w Gentoo był), możemy go pobrać ze strony producenta. Znajdziemy tam również wersje dla Windows, Solaris i MacOS X.

Kopiujemy sobie klucz prywatny z serwera, który to klucz znajduje się prawdopodobnie w pliku /etc/nxserver/client.id_dsa.key (uwaga: prawo do czytania domyślnie ma tylko root). Najszybciej zrobić to przez SCP:

$ scp root@nasz.serwer:/etc/nxserver/client.id_dsa.key ./

Po uruchomieniu nxclient, importujemy klucz i konfigurujemy pozostałe opcje. Tu odsyłam na Google, bowiem nie chce mi się przygotowywać screenshotów i omawiać wszystkich zakładek.

W przypadku problemów z połączeniem możemy spróbować połączyć się z użytkownikiem systemowym przez SSH:

$ ssh -i client.id_dsa.key nx@nasz.serwer
HELLO NXSERVER - Version 1.5.0-60 OS (GPL)
NX> 105

Wpisanie bye zamknie sesję.

Problemy

Napotkałem przede wszystkim na dwa problemy podczas używania NX. Po pierwsze, nigdy nie udało mi się zalogować na konsolę i nie mam pojęcia, jak miałaby ona wyglądać (xterm czy co?). Po drugie, w takich sytuacjach klient po prostu się zamyka, a na serwerze, po wydaniu polecenia

# nxserver --list

okazuje się, że wiszą jakieś sesje, które trzeba ręcznie usuwać.

Powyższe niedogodności nie zmieniają jednak faktu, że NX jest funkcjonalnym i wydajnym narzędziem zdalnego dostępu do pulpitu czy też pojedynczych aplikacji w trybie graficznym.

Dodano: 30 lipca 2007 @ 15:24

No i proszę, jednak da się zarządzać sesjami od strony klienta. Wystarczyło zajrzeć do menu KDE, gdzie instalator dodał potrzebne linki. Otóż sesjami zarządzamy przez nxclient --admin. Ponadto możemy posłużyć się kreatorem podczas tworzenia nowej sesji: nxclient --wizard.

Dodawanie komentarzy

XHTML: Możesz używać tagów: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">