SSH: Verschlüsselter Fernzugriff

Seite: 3/9
(3016 Worte insgesamt im Text)
(21479 mal aufgerufen)  Druckerfreundliche Ansicht

SSH-Verbindungen unter Linux

Das Clientprogramm SSH

Für einen einfachen Verbindungsaufbau genügt dann von einem Linux-Client aus der Befehl ssh root@myip.dyndns.org.

Verbindungsaufbau

Der eigentliche Verbindungsaufbau findet dann zunächst über asymmetrische Verschlüsselung statt. Jeder SSH-Server benötigt zu seinem Betrieb ein solches Schlüsselpaar, welches aus einem öffentlichen und einem privaten Schlüssel besteht.

Empfängt der SSH-Server eine Verbindungsanfrage, dann sendet er seinen öffentlichen Schlüssel an den Client. Hat dieser noch keinen Schlüssel vom Server erhalten wird der Nutzer gefragt, ob der öffentliche Schlüssel gespeichert werden soll.

Anfrage zur Speicherung des öffentlichen Serverschlüssels

The authenticity of host 'ssh-server.example.com (10.10.0.14)' can't be established.
RSA key fingerprint is c7:08:14:35:c0:86:7b:a5:b1:b6:4f:1c:e4:73:bc:0f.
Are YOU sure you want to continue connecting (yes/no)?

Wenn Sie sicher sind, dass der übertagene, öffentliche Schlüssel wirklich der Schlüssel des angewählten Servers ist, dann bestätigen Sie die Frage mit einem ausgeschriebenen "yes" - andere Eingaben führen hier zum Abbruch der Verbindung. Wenn Sie unsicher sind, sollten Sie den angegebenen Fingerprint mit der Ausgabe des am Server eingegebenen Befehls ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key.pub überprüfen. Diese müssen identisch sein.

Nun wird der öffentliche Schlüssel des Servers auf dem Client im Heimatverzeichnis des Benutzers unter .ssh/known_hosts gespeichert. Bei allen späteren Verbindungen wird der ssh-Client nur noch überprüfen, ob sich der Schlüssel geändert hat und Sie ggf. mit einer Warnmeldung darauf hinweisen.

Man-in-the-middle Angriff

Sollten Sie eine solche Warnung beim Versuch eines Verbindungsaufbaus erhalten, dann sollten Sie zunächst sicherstellen, dass sich das Schlüsselpaar des Servers geändert hat und dann ggf. den zu diesem Server gehörenden Eintrag in der Datei .ssh/known_hosts löschen. Vorher ist aus Sicherheitsgründen keine Verbindungsaufnahme möglich, da hier ein sogenannter "man in the middle"-Angriff stattfinden könnte, bei welchem sich ein anderer Rechner als der eigentlich angewählte Server ausgibt. Wenn sich wirklich das Schlüsselpaar des Servers gendert haben sollte, müssen Sie nach dem Löschen der entsprechenden Zeile den öffentlichen Schlüssel erneut importieren, wie weiter oben beschrieben.
Sie sollten also nach dem einmaligen Austausch des Schlüssels zukünftig nur noch nach dem Passwort für root gefragt werden, da Sie durch das vorangestellte "root@" dem Server mitgeteilt haben, dass Sie sich mit diesem Nutzernamen am System anmelden möchten. Dasselbe Verhalten erreichen Sie übrigens auch, wenn Sie den folgenden Befehl aufrufen: ssh -l root myip.dyndns.org. Wenn Sie den Benutzernamen weglassen, wird der Client versuchen, Sie mit dem Nutzernamen des aktuellen Systems anzumelden. Nun können Sie auf der Konsole des Servers arbeiten.

Im zweiten Schritt möchten wir aber auch mal ein grafisches Programm starten, um z.B. im Konqueror die Homeverzeichnisse zu kontrollieren oder ein wenig zu surfen. Geben Sie dazu auf Ihrem heimischen System den Befehl ssh -X root@myip.dyndns.org ein. Durch das -X wird X11-Forwarding aktiviert. Damit erzeugt das Programm ssh ein Pseudo-Terminal auf dem Zielrechner und setzt die Umgebungsvariable DISPLAY entsprechend. Die graphischen Ausgaben eines Programms werden dann von ssh verschlüsselt weitergeleitet und erscheinen auf dem Clientrechner.

Nach der nun schon bekannten Eingabe des Passworts können Sie nun also auch grafische Programme starten - z.B. den Konqueror mit dem Befehl konqueror. Erwarten Sie aber bitte keinen Geschwindigkeitsrausch - besonders nicht bei Wählverbindungen!

Die Geschwindigkeit können Sie aber durch Kompression erhöhen. Hierbei wird ein ähnlicher Algorithmus wie für gezipte Dateien verwendet. ähnlich dem dortigen Verfahren können Sie auch hier den Grad der Kompression angeben. Wiederholen Sie also die vorherige Anmeldung - nur schalten Sie diesmal mit dem zusätzlichen Parameter "-C" die Kompression ein:

ssh -C -X root@myip.dyndns.org
Vergleichen Sie die Geschwindigkeit, mit der der Konqueror nun startet und arbeitet.

Wenn Sie eine stabile Verbindung eingerichtet haben, können Sie die Einstellungen in einer Konfigurationsdatei ablegen und müssen so nicht bei jeder erneuten Verbindung wieder alle Optionen eingeben. Jeder Nutzer kann so in seinem Heimatverzeichnis im Unterverzeichnis .ssh eine Datei config anlegen und dort entweder für einzelne Rechner, ganze Netzwerke oder global die Optionen für eine Verbindung einstellen.

So könnte eine config-Datei einige globale Optionen konfigurieren, so dass z.B. X11-Forwarding aktiviert ist, als Protokoll das sicherere Protokoll 2 verwendet wird, der Nutzernamen auf dem fremden System vorgeben oder Kompression aktiviert wird.

Host *
StrictHostKeyChecking ask
ForwardX11 yes
UseRsh no
FallBackToRsh no
Compression yes
BatchMode no
KeepAlive yes
User root
Protocol 2

Beachten Sie bitte, dass die hier gezeigten Einstellungen für alle künftigen Verbindungen gelten. Ausnahmen für bestimmte Rechner legen Sie vor diesem globalen Eintrag fest oder geben wieder die Parameter auf der Kommandozeile an. Beim Vorhandensein der oben gezeigten Datei brauchen Sie nun nur noch den Befehl:

ssh myip.dyndns.org
eingeben und Sie werden so mit dem Server verbunden als wenn Sie "ssh -C -X -o protocol 2 root@myip.dyndns.org" eingegeben hätten.

...und wenn Sie nur einen einzelnen Befehl absetzen wollen, dann d�rfte

ssh root@myip.dyndns.org ls /tmp
für Sie interessant sein. Sie können also den auszuführenden Befehl einfach nach der Angabe des Zielhosts angeben. SSH kehrt dann nach der Ausführung des Befehls direkt zurück. Die Ausgaben des Befehls landen aber in ihrer lokalen Shell.

Schlüssel automatisch laden

Der Mensch ist faul - und Linuxer sind wahrscheinlich die faulsten... icon_wink
Deshalb ist es einem Linux-Nutzer natürlich viel zu kompliziert, wenn er jedesmal sein Passwort für den SSH-Key eingeben muss. Entsprechend kommt unter Linux nun der sog. ssh-agent ins Spiel. Dieser dient quasi als "Cache" und hält den Schlüssel offen, so dass nur ein einziges Mal während einer Sitzung nach dem Passwort gefragt wird. Wenn man dies nun noch mit einem weiteren Programm namens keychain kombiniert, kann man auch noch beliebig viele Terminals während einer Sitzung öffnen.

#!/bin/bash
if [ -x /usr/bin/keychain ]; then
/usr/bin/keychain ~/.ssh/id_rsa
else
eval ssh-add ~/.ssh/id_rsa
fi
Mehr dazu demnächst...


Kommentare

Einen Kommentar hinzufügen



 Suchen:


 Umfrage

(Nur für angemeldete Benutzer)

Was wird hier am meisten vermisst?

[ Ergebnis | Umfragen ]

Stimmen: 621
Kommentare: 0

 Zitate

File not found. Should I fake it? (Y/N)

-- anonymous