Mit NX steht eine leistungsfähige Alternative zu VNC für Remote-Desktop-Verbindungen zur Verfügung welche vollständg per SSH läuft und damit verschlüsselt ist.

Der Server lässt sich unter Fedora mit wenigen Schritten einrichten, derzeit scheinen ein paar Symlinks nicht korrekt gesetzt zu werden, daher hier auch die StepByStep-Anleitung entsprechend ergänzt.

Der grosse Vorteil im Gegensatz zu anderen Lösungen ist die enorme Performance, gesicherte Übertragung und dass im Gegensatz zu VNC auf einem Unix-System nicht permanent ein ganzer Desktop läuft der auf Verbindungen wartet sondern das Subsytem bei Bedarf ähnlich dem sftp-Server gestartet wird.

Gleichzeitig kann im Gegensatz zu X-Forwarding aber eine Sitzung trotzdem per "Suspend" beendet werden so dass gestartete Anwendungen weiter laufen.

Wieso die Jungs von Fedora sowohl auf FC6 als auch Fedora 7 die Symlinks unter /usr/bin nicht setzen ist mir ein Rätsel, macht unnötig Probleme und ruft nach einem Bugreport :-)

Zum Thema VNC-Server gibt es allerdings seit heute auch einen erweiterten Artikel so dass sich dieser auch verschlüsselt einsetzen lässt und vor allem auch die lokale X-Session (Display 0) bereitstellt: VNC-Artikel

Wichtige Schritte im Vorfeld

Die Beschreibung bezieht sich auf eine SSH-Konfiguration welche nur Anmeldung per Zertifikat erlaubt und damit BruteForce-Angriffe unmöglich macht, daher auch das zusätzliche Anlegen von eigenen NX-Benutzern.

Wichtig ist in diesem Fall eine entsprechende SSH-Konfiguration, der nx-Server sucht seine Zertifikate unter ".ssh/authorized_keys2". Bevor also die Konfiguration des SSH-Dienstes angepasst wird sind bei allen Benutzern im Ordner ".ssh" ggf. symbolische Links zu setzen um sich den Zugriff nicht zu versperren.

cd /home/username/.ssh
ln -s ./authorized_keys ./authorized_keys2

NX-Fähige SSH-Konfiguration mit Zertifikaten (/etc/ssh/sshd_config)

Port 22
Protocol 2
AddressFamily any
ListenAddress 0.0.0.0
SyslogFacility AUTHPRIV
PasswordAuthentication no
ChallengeResponseAuthentication no
GSSAPIAuthentication no
GSSAPICleanupCredentials no
X11Forwarding yes
RSAAuthentication yes
PubkeyAuthentication yes
PermitEmptyPasswords no
PermitRootLogin yes
StrictModes yes
AllowTcpForwarding yes
TCPKeepAlive yes
KeepAlive yes
UsePrivilegeSeparation yes
Compression yes
UsePAM yes
AuthorizedKeysFile .ssh/authorized_keys2
AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
AcceptEnv LC_IDENTIFICATION LC_ALL
Subsystem sftp /usr/libexec/openssh/sftp-server

Server-Installation

yum install freenx nx

ln -s /usr/libexec/nx/nxagent /usr/bin/
ln -s /usr/libexec/nx/nxclient /usr/bin/
ln -s /usr/libexec/nx/nxdesktop /usr/bin/
ln -s /usr/libexec/nx/nxkeygen /usr/bin/
ln -s /usr/libexec/nx/nxloadconfig /usr/bin/
ln -s /usr/libexec/nx/nxnode /usr/bin/
ln -s /usr/libexec/nx/nxnode-login /usr/bin/
ln -s /usr/libexec/nx/nxprint /usr/bin/
ln -s /usr/libexec/nx/nxproxy /usr/bin/
ln -s /usr/libexec/nx/nxserver /usr/bin/
ln -s /usr/libexec/nx/nxserver-helper /usr/bin/
ln -s /usr/share/doc/freenx-0.7.0/nxsetup /usr/bin/

nxsetup --install
"Do you want to use your own custom KeyPair?" mit y beantworten

nxserver --adduser [username]
nxserver --passwd [username]

Die Datei "/var/lib/nxserver/home/.ssh/client.id_dsa.key" über eine gesicherte Verbindung auf den Client kopieren, das ist das Zertifikat
welches in der Client-Software importiert werden muss.

Installation des Clients

  • Das entsprechende Paket von http://www.nomachine.com/download.php herunterlden und mittels "yum --nogpgcheck localinstall paket.rpm" installieren.
  • Die Client-Anwendung befindet sich im Menü "Internet", dort eine neue Verbindung mit einem aussagekräftigen Namen sowie Server und Port (Default: 22) anlegen.
  • In meinem Fall wurde hier eine KDE-Sitzung ausgewählt und im Abschnitt "Display" die Option "Available Area" um den 1440x900-Screen optimal auszunutzen.
  • In den erweiterten Einstellungen befindet sich unter "General" eine Schaltfläche "Key", über diesen Dialog wird das am Server unter "/var/lib/nxserver/home/.ssh/client.id_dsa.key" generierte Zertifikat importiert.

Troubleshooting

Sollte bei der ersten Konfiguration des Servers etwas schieflaufen empfiehlt es sicht mittels "nxserver --uninstall --purge" die Konfiguration zu entfernen, das Paket "freenx" zu Deinstallieren und so noch vorhanden die Ordner "/var/lib/nxserver/" und "/usr/libexec/nx/" komplett zu löschen.

Danach die Installations-Anleitung mit Ausnahme der symbolischen Links erneut durchführen und ggf. Fehlermeldungen von "nxsetup" beachten.