17.8 OpenSSH 

Es gibt prinzipiell mehrere Arten, auf einen anderen Rechner so zuzugreifen, als stünde er auf Ihrem Schreibtisch. Die Einsatzmöglichkeiten sind vielfältig:
- Sie können einen (Root-)Server aus der Ferne administieren, ohne dass Sie vor Ort sein müssen.
- Sie können Launchpad mit Bazaar nutzen (zur Versionsverwaltung eines Projekts). Nähere Details hierzu finden Sie in Abschnitt auf Seite .
- Sie können sichere Verbindungen aufbauen, sei es in einem heimischen Netzwerk oder dann, wenn Sie anderen Nutzern mittels eines Remote-Desktops helfen.
Bevor Sie sich anschicken, Daten zwischen zwei Rechnern auszutauschen, sollten Sie versuchen, den ersten Rechner über den zweiten von der Kommandozeile aus »fernzusteuern«. Das veraltete (und unsichere, weil abhörbare) Telnet-Verfahren wurde in der Vergangenheit durch die SSH (die Secure Shell) abgelöst. SSH überträgt im Gegensatz zu den anderen Lösungen die Login-Informationen und das Passwort verschlüsselt.
Um einen SSH-Server auf einem Rechner so aufzusetzen, dass sich die Benutzer auf diesem aus der Ferne (engl. remote) einloggen können, müssen Sie zunächst das Paket openssh-server auf dem Rechner installieren, der als Server fungieren soll:
sudo apt-get install openssh-server
Das Paket openssh-client wurde per Default installiert. Nach der Installation des Pakets wird auf dem entsprechenden Rechner der SSH-Server gestartet. Dies erkennen Sie z. B. mit folgendem Kommando:
ps ax | grep sshd %15009 Ss 0:00 /usr/sbin/sshd
Sie haben bei Ubuntu ebenfalls die Möglichkeit, ein Meta-Paket namens ssh zu installieren. Dieses Paket installiert auf einen Schlag den SSH-Client und -Server. Selbstverständlich können Sie sich auch mit anderen Rechnern verbinden, auf denen andere Linux-Distributionen installiert sind. Hierbei kann es vorkommen, dass bei diesen der SSH-Server standardmäßig bereits installiert ist.
Authentifizierung
Nun können Sie versuchen, sich von einem im gleichen Netz befindlichen Client auf demSSH-Server einzuloggen. Dazu öffnen Sie eine Konsole und geben das Kommando ssh <Rechnername/IP> ein. Wenn Sie zum ersten Mal versuchen, mit dem Server Kontakt aufzunehmen, müssen Sie die Verbindungsaufnahme explizit bestätigen:
ssh flitzi The authenticity of host 'flitzi (192.168.0.103)' can't be established. RSA key fingerprint is 02:28:76:ef:ab:43:2a:60:91:78:d9:51:16:a6:27:ef. Are you sure you want to continue connecting (yes/no)? yes
Schließlich müssen Sie das Passwort Ihres Accounts auf dem Server eingeben. Dazu sollten Sie auf dem Rechner eingeloggt sein. Das Ganze setzt natürlich voraus, dass ein entsprechender Account auf dem Server existiert. Wer sich unter einem anderen Login-Namen einloggen möchte, gibt den Befehl ssh <Benutzername>@<Host> ein, wobei die Platzhalter entsprechend zu ersetzen sind. Nun können Sie sich auf dem entsprechenden Rechner so bewegen, als würden Sie direkt davor sitzen. Sie können sogar Programme starten. Aber halt, werden Sie sagen, wie steht es mit grafischer Software? Man kann ja nicht sehen, was in den entsprechenden Fenstern ausgegeben wird ... In diesem Fall bietet sich ein X-Tunnel an. Sie verlassen die SSH-Shell mit der Tastenkombination
+
.
Es ist sogar möglich, Dateien zwischen zwei Rechnern zu kopieren:
scp test1.txt hatt@192.168.0.1:~
kopiert die Datei test1.txt in das Heimatverzeichnis (gekennzeichnet durch die Tilde »~«) des Benutzers hatt auf dem SSH-Server (IP: 192.168.0.1). Die Syntax für den Pfad lautet dabei Benutzer@Server:<Pfad>. Den umgekehrten Weg demonstriert der folgende Befehl:
scp hatt@192.168.0.1:~/test.txt .
| Einzelne Dateien von einem Remote-Host holen |
|
Mit dem Befehl scp -r ist es leider nicht möglich, nur bestimmte Dateien zu übertragen. Das ist auch nicht nötig, weil man mit zwei Tar-Befehlen arbeiten kann. Das tar auf dem entfernten Rechner schreibt nach stdout, und das tar auf dem lokalen Rechner liest von stdin. Um Dateien von einem Remote-Host zu holen, dient dieser Befehl: |
| ssh remotehost "cd beispiel; find . -name '*.jpg' | tar -cf \ --files-from=-" | tar -xvf - |
|
Mit dem folgenden Befehl werden Dateien zum Remote-Host kopiert. Aus dem Verzeichnis workdir wird das Verzeichnis beispieldir kopiert. |
| cd workdir
find beispieldir -name "*.txt" | tar -cf – --files-from=- | \ ssh remotehost tar -xvf – -C workdir |
Vorher: Passwort eingeben
Hier wird eine Datei test2.txt vom Server in das aktuelle Verzeichnis kopiert (erkennbar an dem nachfolgenden Punkt ».« ). Die oben genannte IP-Adresse ist natürlich den entsprechenden Gegebenheiten anzupassen – in jedem Fall muss vor dem Kopiervorgang das für den Benutzer definierte Passwort eingegeben werden. Nun ist das Kopieren auf der Kommandozeile nicht jedermanns Sache, schöner wäre es, wenn man hierzu einen Dateimanager verwenden könnte. Kein Problem: Starten Sie unter GNOME den Remote-Zugriff auf einen SSH-Server über Orte • Verbindung zu Server. In dem folgenden Menü (Abbildung) definieren Sie die IP-Adresse oder den Namen des Servers (Letzteres bietet sich an, wenn dieser in Ihrer Datei /etc/hosts verzeichnet ist). Als Dienst wird SSH angegeben. Darüber hinaus können Sie außerdem ein Startverzeichnis angeben, in das direkt nach dem Einloggen gewechselt wird.
Abbildung 17.9 Mit dem Server verbinden
Durch die obigen Schritte wird auf dem Desktop ein kleines Icon erzeugt, das die Verbindung repräsentiert. Wenn Sie das Icon durch Anklicken öffnen, werden Sie nach Ihrem Serverpasswort gefragt, und schließlich zeigt Nautilus die entsprechenden Inhalte auf dem Server an. Nun können Sie in gewohnter Weise Daten zwischen Client und Server kopieren.
KDE
KDE-Nutzer können den Universalbrowser Konqueror in ähnlicher Weise einsetzen. Dazu starten Sie eine Konqueror-Instanz und geben in der Adresszeile den Servernamen bzw. dessen IP-Adresse wie folgt ein:
fish://192.168.0.103
Das Kopieren funktioniert dann, wie oben beschrieben, in Verbindung mit einem weiteren Konqueror-Fenster.
Abbildung 17.10 Der Konqueror bietet den Transfer über SSH frei Haus.
| Portforwarding |
|
Portforwarding ist einfach und praktisch. Um einen Port vom lokalen Rechner zu einem entfernten weiterzuleiten, verwenden Sie die Option -L. Bei zwei Rechnern sieht dies folgendermaßen aus: |
| ssh -L 8888:localhost:80 entfernt |
|
Die Secure Shell baut eine Verbindung zu dem Rechner entfernt auf und leitet von dort localhost:80 weiter zu dem Rechner hier. Anschließend kann man mit telnet localhost 8888 auf dem Rechner hier testen, ob die Verbindung besteht. Merke: Der Hostname zwischen den Doppelpunkten wird auf dem Rechner entfernt aufgelöst. |
|
Bei vier Rechnern sieht dies folgendermaßen aus: |
| ssh -g -L 8888:weit-weg:80 entfernt |
|
Wie oben, bloß dass von dem Rechner entfernt der Port von weit-weg weitergeleitet wird. Mit der Option -g (Gateway) ist es anderen Rechnern möglich, den weitergeleiteten Port auf dem Rechner hier anzusprechen. Eine Verbindung mit telnet hier 8888 vom Rechner hier2 ist nun möglich. Die Fehlermeldung bind: Address already in use kann ignoriert werden. |
SSH Public Key für passwortfreies Anmelden installieren
Bisher mussten Sie sich immer am entfernten Rechner anmelden, weil der andere Rechner Sie nicht automatisch erkennen konnte. Wenn Sie sich wiederholt auf dem anderen Rechner anmelden, kostet dies viel kostbare Zeit. Des Weiteren hat diese Art der Nutzung den entscheidenden Nachteil, dass sich jeder, der im Besitz Ihres Passwortes ist, bei diesem Rechner anmelden kann.
Dies können Sie vermeiden, indem Sie sich eindeutig identifizieren. Der Trick besteht darin, dass Sie sich einen privaten und einen öffentlichen Schlüssel anlegen. Der öffentliche Schlüssel wird auf dem Zielrechner in die Datei ~/.ssh/authorized_keys eingefügt. Wenn diese Datei noch nicht existieren sollte, müssen Sie sie erst erstellen. Sie benötigen diese Schlüssel auf jedem Rechner, der sich mit dem Zielrechner verbinden soll. Verwenden Sie zum Kopieren des öffentlichen Schlüssels am besten scp.
Sie erstellen die beiden Schlüssel (siehe Abbildung) durch:
ssh-keygen -t rsa
Die beiden Schlüssel
- id_rsa (privat) und
- id_rsa.pub (öffentlich)
befinden sich in Ihrem /home-Verzeichnis in dem versteckten Ordner ./ssh.
Bei der Erstellung des privaten Schlüssels werden Sie nach einer Passphrase gefragt. Im Gegensatz zu einem Passwort können Sie hierbei einen freien Text, bestehend aus mehreren Wörtern, angeben (es reicht selbstverständlich auch ein Wort). Wählen Sie unbedingt eine Passphrase! Mit dieser wird nämlich Ihr privater Schlüssel vor neugierigen Blicken geschützt. Ein gutes Passwort garantiert Sicherheit.
Hüten Sie Ihren privaten Schlüssel wie Ihren Augapfel, und lassen Sie ihn nicht in fremde Hände gelangen. Wenn Sie den Schlüssel zu Sicherungszwecken in einem Backup aufbewahren, ist es sinnvoll, diesen noch einmal zu verschlüsseln (beispielsweise mit GPG).
Abbildung 17.11 Mit ssh-keygen erzeugen Sie einen privaten und einen öffentlichen Schlüssel.
Bei einer SSH-Verbindung werden nun zwischen Ihrem Rechner und dem Zielrechner die Schlüsselinformationen ausgetauscht, sodass ein Anmelden im herkömmlichen Sinne nicht mehr nötig ist. Ein kleiner Wermutstropfen bleibt allerdings: Sie müssen nun bei jeder Verwendung des privaten Schlüssels Ihre Passphrase eingeben. Somit haben wir zwar an Sicherheit, nicht aber an Komfort und Geschwindigkeit gewonnen.
| Mit SSH die Uhrzeit setzen |
|
Lohnt sich der Einsatz von NTP (Network Time Protocol) nicht oder ist ein Rechner nur per TCP und nicht per UDP erreichbar, dann hilft folgender Aufruf, um die Uhrzeit auf einem entfernten Rechner zu setzen: |
| ssh root@server date -s " 'date -R' " ; hwclock --systohc |
|
Der Befehl date -R wird auf dem lokalen Rechner ausgeführt. Die Option -R bewirkt, dass eine Ausgabe erzeugt wird, die der entfernte Rechner auch versteht. Die Ausgabe von date ohne Optionen wird aufgrund der deutschen Schreibweise auf dem entfernten Rechner unter Umständen nicht verstanden. Mit date -s setzen Sie das Datum auf dem entfernten Rechner. |
Seahorse
Um auch die geforderte Geschwindigkeit und den Komfort einer Anmeldung ohne Eingabe einer Passphrase zu erhalten, verwendet Ubuntu das Programm Seahorse. Sie finden Seahorse im GNOME-Menü unter Anwendungen • Zubehör • Passwörter und Verschlüsselung. Dieses Programm verwaltet auf Wunsch Ihre sämtlichen Passwörter und Schlüssel, sodass Sie sie nicht wiederholt eingeben müssen.
Die Freigabe dieser Schlüssel und Passwörter ist an Ihr Benutzerkonto auf dem lokalen Rechner gekoppelt, sodass Sie sich mit Ihrem Benutzerpasswort authentifizieren. Sie finden hier beispielsweise auch den Schlüssel für ein Funknetzwerk (WLAN). Die gespeicherten Angaben kann sich somit jeder ansehen, der Zugriff auf Ihr Benutzerkonto hat.
Abbildung 17.12 Seahorse ist Ihr virtuelles Portemonnaie.
| Fehlersuchen beim SSHD durch einen zweiten Server |
|
Falls der SSH-Server sich nicht so verhält wie er soll und Sie beispielsweise mehr Debug-Meldungen sehen möchten, können Sie einen zweiten Server auf einem anderen Port starten. Das ist insbesondere dann sinnvoll, wenn Sie gerade per SSH eingeloggt sind und nicht den Zugang für andere während des Testens stören wollen. Gerade bei weit entfernten Servern müssen Sie beim Bearbeiten der SSHD-Konfiguration sehr vorsichtig sein: |
| sshd -d -e -p 2222 |
|
Die Optionen haben folgende Bedeutung: -d = Debug, -e = Log nach stderr und -p = anderer Port (der richtige Server läuft weiterhin auf 22). Das obige Kommando startet einen SSH-Server auf Port 2222. Von einem Client aus können Sie sich nun mit der zusätzlichen Option -p 2222 mit diesem Server verbinden. |
|
Sie können auch mit -f dem Debug-Server eine andere Konfigurationsdatei geben. Mit dieser Konfigurationsdatei können Sie dann »spielen« und den richtigen Server erst neustarten, falls die Tests erfolgreich waren. Beachten Sie, dass der mit -d gestartete Server sich nach einer Verbindung wieder beendet. |
| Zugriff auf mit einer Passphrase geschützte Schlüssel aus einem Cron-Job |
|
Mit dem Programm ssh-agent werden die Umgebungsvariablen gesetzt, sodass Sie mit allen Kind-Prozessen die Schlüssel benutzen können. Beachten Sie: Ein Cron-Job läuft zwar mit der User-ID des Nutzers, hat aber keinen direkten Zugriff auf die nötigen Umgebungsvariablen. |








Jetzt bestellen







