Für einen einfachen Verbindungsaufbau genügt dann von einem Linux-Client aus der Befehl ssh root@myip.dyndns.org.
VerbindungsaufbauDer 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 AngriffSollten 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. |
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:
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:
...und wenn Sie nur einen einzelnen Befehl absetzen wollen, dann d�rfte
Der Mensch ist faul - und Linuxer sind wahrscheinlich die faulsten...
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 fiMehr dazu demnächst...