Einrichtung von SSH und NX über Public Key
Sicherheitswarnung:
Das hier beschriebene Vorgehen in Bezug auf !FreeNX weist eklatante Sicherheitsprobleme auf und entsprechende Änderungen sollten schnellstmöglich rückgängig gemacht werden! Dies betrifft insbesondere evtl. hinzugefügte NX Keys an authorized_!keys2 und Änderungen am
userdel -r nx
apt-get remove --purge freenx
danach kann !FreeNX bei Bedarf wieder installiert werden.
In dieser Anleitung könnt Ihr folgendes finden:
Kapitel 1: Anlegen einer Pubkeyauthentication für ssh
Kapitel 2: Aktivieren eine NX Verbindung über Pubkeyauthentication
Kapitel 3: Zugriff auf den lokalen Arbeitsbereich vom Server (Entfernte Mausbewegungen am Server sichtbar)
Als
Client bezeichne ich den PC, der sich verbinden will und
Server ist dann natürlich der PC, zu dem verbunden wird.
Kapitel 1 - Pubkeyauthentication für ssh:
Client
Folgendes muss auf jedem Clienten erledigen erledigt werden, der sich zu dem PC mit der Pubkeyauthentication verbinden will:
Mit dem normalen User benötigt man einen Schlüssel, den man anschließend am Server registriert. Dazu gibt man in einer Shell folgendes ein:
ssh-keygen -t rsa -b 2048
Man wird dort nach einem Passwort gefragt. Dies Passwort is zukünftig für die ssh-Verbindung zuständig. Sollte man keines eingeben, wird später die Verbindung sofort aufgebaut (nicht empfehlenswert außer man will mit
rsync arbeiten!)
Anschließend findet man im
/home/<user>/.ssh/ zwei neue Dateien. Einmal die
id_rsa, welche dem Schlüssel für den Clienten entspricht und die
id_rsa.pub, welche am Server eingetragen werden muss. Am bestem man kopiert sich die Datei auf den USB-Stick, damit man sie am Server hat (oder alternativ so wie ich per Mail)
Damit sind die Arbeiten am Clienten auch schon vorbei und man kann zum Server wechseln.
Server
Hier muss man zuerst mal den SSH-Server starten. Dazu einfach folgendes in die Shell eintippen:
sux
<passwort>
/etc/init.d/ssh start
Anmerkung: Alle weiteren Befehle, sofern nicht anders erwähnt, sind in so einer Root-Shell auszuführen!
Damit der Server automatisch beim Booten startet:
unfreeze-rc.d
rcconf
freeze-rc.d
Im
rcconf eine Kreuz bei
ssh setzen (mit der Leertaste und mit Eingabe bestätigen)
Nun müss die Datei
/etc/ssh/sshd_config angepasst werden:
mcedit /etc/ssh/sshd_config
/etc/init.d/ssh restart
In der Datei müssen folgende Änderungen gemacht werden:
PermitRootLogin no
StrictModes no
RSAAuthentication no
PubkeyAuthentication yes
AuthorizedKeysFile /etc/ssh/authorized_keys
IgnoreRhosts yes
RhostsRSAAuthentication no
HostbasedAuthentication no
PermitEmptyPasswords no
PasswordAuthentication no
UsePAM no
Damit ist sichergestellt, dass man sich
nur per Pubkeyauthentication einloggen kann. Die
AuthorizedKeysFile hab ich absichtlich auf
/etc/ssh/authorized_keys gesetzt, damit später die NX Verbindung auch funktioniert!
Nun muss man noch die Keys importieren. Dazu geht man in den Ordnern in dem sich die
id_rsa.pub befindet und gibt folgendes in eine Shell ein:
cat id_rsa.pub >> /etc/ssh/authorized_keys
Nun kann man versuchen, sich vom Client aus auf den Server zu verbinden.
Einfach mit dem normalen User folgendes tippen:
ssh -X <ip-adresse>
<passwort>
Das Passwort ist hierbei das, welches man beim Anlegen des Keys eingegeben hat. Schon kann man auf dem Server arbeiten. Die Option -X gibt an, dass man auch grafische Programme starten darf. Nur werden diese lange laden! Besser ist es, hierzu der NX-Server geeignet.
So damit ist Kapitel 1 beendet.
Tipp für ssh:
Das Programm
screen ist nützlich wenn man sich zwischendurch ausloggt (Fenster einfach wegklickt/beendet) und der Server trotzdem weiterrechnen soll. mit
screen -r kann man später wieder auf dieses Fenster verbinden.
Kapitel 2 - NX für PubkeyAuthentication
Server
So, da bei Kanotix der
FreeNX? ja bereits installiert ist, werde ich gleich die Konfiguration erklären.
Man gibt dazu folgendes in eine Shell ein:
Anmerkung: "dpkg-reconfigure freenx" entspricht in etwa den nxsetup-kanotix.
Sicherheitswarnung:
Es wird aus Sicherheitsgründen dringlich davon abgeraten den Inhalt von users.id_dsa.pub an authorized_keys anzufügen, dies umgeht die 2-stage Sicherheitsmechanismen von FreeNX und kann bei Fehlkonfigurationen leicht jedem externen User Vollzugriff auf den Account ermöglichen!
Dort wählt man den zweiten Punkt aus. Es werden nun Keys für den NX Server erstellt und unter
/etc/nxserver/ gespeichert. Die Keys tragen den Namen
users.id_dsa und
users.id_dsa.pub und haben auch die gleiche Bedeutung wie die normalen Keys. Nur dieses mal kopiert man die
user.id_dsa auf den USB-Stick, da man die Datei am Client benötigt. Die
users.id_dsa.pub muss man in die
authorized_keys eintragen:
cd /etc/nxserver
cat users.id_dsa.pub >> /etc/ssh/authorized_keys
Sicherheitswarnung:
Es wird aus Sicherheitsgründen dringlich davon abgeraten den Inhalt von users.id_dsa.pub an authorized_keys anzufügen, dies umgeht die 2-stage Sicherheitsmechanismen von FreeNX und kann bei Fehlkonfigurationen leicht jedem externen User Vollzugriff auf den Account ermöglichen!
Jetzt muss man noch die
/etc/nxserver/node.conf Datei anpassen:
mcedit /etc/nxserver/node.conf
Man ändert folgende Zeilen:
SSHD_PORT=22
ENABLE_PASSDB_AUTHENTICATION="1"
ENABLE_SSH_AUTHENTICATION="1"
ENABLE_SU_AUTHENTICATION="1"
damit schaltet man das Einloggen auf ssh über Keys um.
Sicherheitswarnung:
Das folgende ist absoluter Wahnsinn und sollte unter allen Umständen rückgängig gemacht werden, der Systemuser nx hat privilegierten Zugriff auf das Sessionmanagement und dies kommt insbesondere in Verbindungen mit den Änderungen an node.conf einem
Außerdem musste ich noch den User nx von seinem lock befreien, da ansonsten ebenfalls kein Einloggen möglich war:
damit wäre man mit dem Server fertig und man braucht sich nur noch verbinden.
Sicherheitswarnung:
Das obige ist absoluter Wahnsinn und sollte unter allen Umständen rückgängig gemacht werden, der Systemuser nx hat privilegierten Zugriff auf das Sessionmanagement und dies kommt insbesondere in Verbindungen mit den Änderungen an node.conf einem
Client
Hier muss eigentlich nicht viel getan werden.
Man startet einfach den nxclient über das K-Menü oder als normaler User mit:
Beim ersten Start kommt der
Connection Wizard und man folgt einfach den Schritten.
- Seite:
Session ... wie die Verbindung heißen soll
Host ... IP-Adresse oder URL des Servers
Port ... wenn in den Config nicht geändert 22
- Seite:
Unix und KDE passen normal. Natürlich kann man was anderes wählen.
Available Area ist fei wählbar.
SSL encryption ... hier unbedingt den Harken setzen!
- Seite:
Create shortcut on desktop ... kann man aktiveren wenn man will
Show the Advanced Configuration ... unbedingt den Harken setzen
- Seite (Advanced Configuration)
Hier gibt es einen Knopf mit der Aufschrift "Key..." drückt man diesen, geht ein Fenster auf, wo man den user.id_dsa eintragen muss. Einfach auf Import klicken und die Position des Keys angeben. Anschließend, wenn man den richtigen Key sieht, mit Save bestätigen. Damit ist auch die Gegenkopplung abgeschlossen. (Ich musste beim Import den File type auf Any files ändern ...) Eventuell kann man den Harken bei remember my password setzen.
Anschließend speicht man alles mit
Save und geht mit
OK auf den Anmeldeschirm.
Username und
Password sind die man am Server definiert hat.
Damit ist auch Kapitel 2 zu Ende.
Kapitel 3 - Zugriff auf Screen0 bzw Screen1
Dazu muss man nur am Server 2 Kleinigkeiten einstellen:
- Im Kontrollzentrum unter Internet & Netzwerk klickt man auf Arbeitsfläche freigeben. Dort aktiviert man "Verbindung ohne Einladung erlauben" und "Steuerung der Arbeitsfläche durch uneingeladene Verbindungen erlauben". Die anderen zwei sollten deaktiviert werden. Das Passwort ist wichtig wenn auf dem Server keine Firewall installiert ist welche den Port 5900 blockt!
- Jetzt braucht man nur mehr das Programm "krdc" zum Verbinden. Dies legt man sich am besten gleich auf den Desktop am Server. In einer Rootshell:
apt-get update
apt-get install krdc
Zum Verbinden gibt man dort "localhost:0" oder "localhost:1" ein und schon hat man Zugriff auf den Arbeitbereich vom eingeloggten User. Dieser Screen bleibt dann auch erhalten, wenn man sich ausloggt. Entspricht dem Screen-Programm in der Konsole.
Quellen:
http://gentoo-wiki.com/Talk:HOWTO_FreeNX_Server∞
http://wiki.ltsp.org/twiki/bin/view/Ltsp/FreeNX∞
Mit bleibt jetzt nur mehr übrig, Euch viel Spaß mit den Remotearbeiten zu wünschen. Bei Fehler in der Anleitung bitte einfach bei mir melden und ich bessere es gleich aus.
lg
Raider700