Freenx

Aus Fedorawiki.de

Wechseln zu: Navigation, Suche


Achtung Achtung: Dieser Artikel wird gerade überarbeitet, da diverse Stellen nicht mehr der Realität entsprechen.
Dieser Artikel ist Teil der HOWTO Sammlung

FreeNX ermöglicht Desktop-Remote-Verbindungen auch über langsame Verbindungen zu entfernten Systemen mit graphischer Benutzeroberfläche, da es sehr sparsam mit der Bandbreite umgeht. Es ist eine ernsthafte Alternative zu VNC. Anders als bei SSH steht nicht nur die Kommando-Shell zur Verfügung, sondern der Desktop des entfernten Systems, was für gewisse Aufgaben oder auch die Nutzung des Remote-Systems zweckmässiger sein kann. Der Geschwindigkeitsvorteil gegenüber anderen Lösungen wird durch eine sehr effiziente Kompression des normalen X-Verkehr und eine äusserst drastische Reduzierung zeitraubender X "round-trips" erreicht, auch haben intelligente Mechanismus zum Speichern und Wiederverwenden bereits zuvor übertragener Daten eine grossen Einfluss.


Inhaltsverzeichnis

Server-Seite

FreeNX installieren

Zuerst sollte das System aktualisiert werden:

[root]# yum update

Die Installation lässt sich mit yum, PackageKit oder yumex erledigen. Auf diesem Weg werden auch eventuell fehlende Abhängigkeiten automatisch aufgelöst, was einem Arbeit ersparen kann. Der schnellste Weg ist yum.

[root]# yum install freenx-server


Konfiguration

Da FreeNX nichts anderes macht als die X-Session über eine SSH-Verbindung weiterzuleiten, muss natürlich SSH funktionieren. Wenn SSH läuft, kann davon ausgegangen werden, dass die Firewall entsprechend konfiguriert ist und so auch FreeNX seinen Dienst tun wird. Soll eine Verbindung durch das Internet hergestellt werden, muss natürlich die Firewall des Router Verbindungen auf dem Port 22 akzeptieren.

Server-Optionen

NXSERVER - Version 2.1.0-72 OS (GPL, using backend: 3.2.0)
Usage: nxserver <option>
--adduser <user>: Add a new user
--passwd <user>: Change password of <user>
--deluser <user>: Remove a user from nx
--listuser: List enabled users

--start: Start the nx server
--stop: Stop the nx server
--status: Show status of nx server
--restart: Restart the nx server. (start,stop)

--list [ user | sessionid ]: List running sessions of user or sessionid 
--history [ user | sessionid | clear ]: Show history [ of user | sessionid ] or clear the history
--terminate <user | :display | sessionid>: Terminate the session pointed to by
       sessionid or display, or all sessions of the specified user.
       Use * for all sessions.
--force-terminate: Like terminate, but removes also session info.
--suspend <user | :display | sessionid>: Suspend the session pointed to by
       sessionid or display, or all sessions of the specified user.
       Use * for all sessions.
--cleanup: Terminates all running sessions. Useful after power-outage.

--broadcast <message>: Send a message to all users
--send <user | :display | sessionid> <message>: Send a message to the specified user or sessionid

Pfade anpassen

Es gibt leider seit längerem das Problem mit den Pfaden, resp. dass die Symlinks nicht gesetzt werden. Die Links auf /usr/bin müssen manuell angegeben werden.

[root]# ln -s /usr/libexec/nx/nxagent /usr/bin/
[root]# ln -s /usr/libexec/nx/nxclient /usr/bin/
[root]# ln -s /usr/libexec/nx/nxdesktop /usr/bin/
[root]# ln -s /usr/libexec/nx/nxkeygen /usr/bin/
[root]# ln -s /usr/libexec/nx/nxloadconfig /usr/bin/
[root]# ln -s /usr/libexec/nx/nxnode /usr/bin/
[root]# ln -s /usr/libexec/nx/nxnode-login /usr/bin/
[root]# ln -s /usr/libexec/nx/nxprint /usr/bin/
[root]# ln -s /usr/libexec/nx/nxproxy /usr/bin/
[root]# ln -s /usr/libexec/nx/nxserver /usr/bin/
[root]# ln -s /usr/libexec/nx/nxserver-helper /usr/bin/
[root]# ln -s /usr/share/doc/nx-3.2.0/nxsample /usr/bin/

Standard-Authentifikation

Der Schlüssel wird bei der Installation von FreeNX unter /var/lib/nxserver/home/.ssh/client.id_dsa.key angelegt, sollte dies nicht der Fall sein, kann der Schlüssel mit folgendem Kommando generiert werden.

[root]# /usr/libexec/nx/nxkeygen --install --setup-custom-key

Authentifikation durch PAM

Will man ohne Schlüsselaustausch zwischen Server und Client arbeiten, muss nach der Installation folgendes Kommando eingegeben werden, um die entsprechende Konfiguration zu erhalten

[root]# nxsetup --install --setup-nomachine-key

Die Datei /etc/ssh/sshd_config muss aber dann zwingend auch noch folgende Parameter enthalten.

UsePAM yes
AllowUsers {BENUTZER MIT LEERZEICHNE GETRENNT} nx
RSAAuthentication no
PubkeyAuthentication yes

Dies ist optional, aber wie auf Seite SSH steht, zu empfehlen.

PermitRootLogin no


Client

Der Client kommt von der italienischen Firma nomachine.com, welche auch eine kommerzielle Version des NX-Server vertreibt. Die Client-Software ist auch für andere Plattformen erhältlich unter anderem für Windows, Solaris und Mac OSX.

Installation

Mit folgendem Kommando kann der Client installiert werden. Es ist auch möglich das rpm-File von der nomachine-Website herunterzuladen und per Maus-Klick zu installieren. Der einfacher und schnellere Weg für i386-System ist:

[root]# rpm -ihv http://64.34.161.181/download/3.4.0/Linux/nxclient-3.4.0-5.i386.rpm

Für Windows, Mac OSX und Solaris stehen weitere Clients zur Verfügung.

Konfiguration

Der installierte Client befindet sich im Bereich Internet -> NX Client for Linux unter Anwendungen. Nach dem Start erscheint ein Assistent, der bei der Einrichtung hilft. Dieser Assistent ist auch in der Windows- und Mac-Version des FreeNX-Client verfügbar und hat ein identisches Aussehen.

Der NX-Client-Assistent
Start des Assistent
Screenshot des NX-Client-Assistent
Screenshot des NX-Client-Assistent
Hier kann einfach Next gedrückt werden.
Host-Einsellungen
Screenshot des NX-Client-Assistent
Screenshot des NX-Client-Assistent
Unter Session wird mit Vorteil ein aussagekräftiger Name eingegeben. Unter Host wird nun die IP-Adresse des entfernten System eingetragen. Beim Schieberegler kan die Geschwindigkeit der Verbindung gewählt werden.
Desktop-Einstellungen
Screenshot des NX-Client-Assistent
Screenshot des NX-Client-Assistent
Beim ersten Menu kann das Betriebssystem des entfernten System gewählt werden. Rechts daneben wird der Desktop-Manager ausgewählt. Praktischerweise ist Custom zu empfehlen. Die Auflösung des Remote-Desktop sollte nicht grösser sein als die des Client-Systems oder Vollbild. Wichtig ist auch, dass dann die Option für die SSL-Verschlüsselung gewählt wird.
Ende
Screenshot des NX-Client-Assistent
Screenshot des NX-Client-Assistent
Nun ist schon das Ende des Assistenten erreicht. Es kann noch eine Verknüpfung auf dem Desktop erzeugt werden oder bereits mit der weiteren Konfiguration fortgefahren werden.

Damit auf das entfernte System mit dem NX-Client zugegriffen werden kann, muss der Key dieses Systems im Client importiert werden. Die Datei /etc/nxserver/client.id_dsa.key, welche sich auf dem Server befindet, muss auf den Client ins folgendes Verzeichnis /usr/NX/share/ kopiert werden und zwar wenn möglich auf einem sichern Weg, wie mit scp. Die Zugriffsrechte müssen dann auf 0644 gesetzt werden.

[root]# scp {BENUTZER}@{NXSERVER}:/etc/nxserver/client.id_dsa.key ~/.ssh/client.id_dsa.key

{BENUTZER} mit dem entsprechenden Benutzernamen ersetzen und {NXSERVER} mit der IP-Adresse oder dem Namen des NX-Servers. Nun die Rechte anpassen.

[root]# chmod 0644 ~/.ssh/client.id_dsa.key

Beim NX-Client muss dann dieser Schlüssel importiert werden. Bei der Konfiguration der Verbindung hat es ein Feld, womit dieser Import geschehen kann.

Also kleine Anmerkung zum Schluss. Es gibt auch ein Plugin für Mozilla, so dass der Browser als Client verwendet werden kann. moznx

Verwendung

Zum Verbindungsaufbau den NX-Client starten und das Passwort eingeben. Danach sollte sich nach kurzer Zeit ein Fenster mit dem Desktop des entfernten System öffnen.

NX Session Administrator

Der NX Session Administrator kann verwendet werden für die Anzeigen von offenen Sessions, Statistiken und Log-Files. Er kann neue Verbindungen aufbauen und nicht mehr benötigte schliessen. Kurz gesagt, der NX Session Administrator ist die Steuerzentrale und eine nützliche Ergänzung, wenn man viele Verbindungen im Auge behalten muss.

Screenshot von NX Session Manager


Tipps und Tricks

Log-Einträge in der Konsole

Unter /var/log/nx/nxserver.log werden die Ereignisse gespeichert. So lassen sich die letzten Einträge anzeigen.

[root]# tail -f /var/log/nx/nxserver.log

Wie bei allen Log-Files sollte von Zeit zu Zeit eine Säuberungsaktion stattfinden, da die Log-Datei je nach eingestellter Log-Stufe ziemlich gross werden kann.

offene Sessions

Es kann vorkommen, dass Sessions offen bleiben auch wenn sich der Benutzer bereits vom Server getrennt hat. Mit diesem Kommando lassen sich die Sessiosn anzeigen.

nxserver --list

Nicht mehr benötigte Sessions können dann gelöscht werden.

nxserver --terminate benutzer

Authentifizierung nur mit Public Key

Manchmal ist es wünschenswert, dass man sich ohne Passwort auf den entfernten System anmelden kann. Dazu hat ein Benutzer des Golem-de-Forum einen Eintrag gemacht. Mit folgender Änderung muss sshd nicht mehr mit PasswordAuth=yes laufen.

#ENC_PASS=$(passdb_get_crypt_pass "$PASS")
#REAL_PASS=$(passdb_get_pass "$USER")
#if [ "$ENC_PASS" = "$REAL_PASS" ]
#then
# Grant ACCESS -> Publickey auth will be used
echo_x "NX> 103 Welcome to: $HOSTNAME user: $USER"
break
#else
# echo_x "NX> 404 ERROR: wrong password or login"
# echo_x "NX> 999 Bye"
# exit 1
#fi 

SSH statt FreeNX

Zum Testen kann nach Rick Stout auch nach folgender Methode vorgegangen werden. Mit dem File client.id_dsa.key kann man sich als Benutzer nx mit dem Server verbinden. Diese Datei muss in das /home/{BENUTZER}/.ssh/ kopiert werden. {BENUTZER} mit dem entsprechenden Benutzernamen ersetzen und {NXSERVER} mit der IP-Adresse oder dem Namen des NX-Servers.

Erstellen einer Sicherung für die Datei ~/.ssh/id_dsa und kopieren der Schlüssel-Datei.

mv ~/.ssh/id_dsa ~/.ssh/id_dsa.bak
cp /usr/NX/share/client.id_dsa.key ~/.ssh/id_dsa
chmod 600 ~/.ssh/id_dsa

Nun kann die Verbindung aufgebaut werden.

ssh -l nx {IP des NXSERVER}
HELLO NXSERVER - Version 2.1.0-72 OS (GPL, using backend: 3.2.0)
NX> 105 quit
quit
Quit
NX> 999 Bye
Connection to {NXSERVER} closed.


Siehe auch


Links

Persönliche Werkzeuge