Ubuntu: SSH - Wie und Warum?

Bestimmt ist Ihnen die Abkürzung SSH mal über den Weg gelaufen. Wir erklären, was es mit dem allgegenwärtigen Tool auf sich hat.

In Pocket speichern vorlesen Druckansicht
Lesezeit: 9 Min.
Von
  • Cornelia Möhring
Inhaltsverzeichnis

SSH ist ein Standard-Netzwerk-Tool, mit dem Verbindungen zu entfernten Geräten aufgebaut werden können - ein sogenannter Fernzugriff. Wie das mit Ubuntu funktioniert und warum das Werkzeug so vielseitig ist, lesen Sie hier. Übrigens: Die genaue Bedeutung der Abkürzung SSH ist Secure Shell.

SSH, also Secure Shell, meint sowohl ein Netzwerkprotokoll als auch die für die Nutzung benötigte Software. Das Ganze dient dazu, eine sichere Verbindung zu einem anderen Rechner im Netzwerk herzustellen, um diesen bedienen zu können. Dazu läuft auf dem entfernten Rechner ein SSH-Server und auf Ihrem lokalen Rechner ein SSH-Client. Sobald man die Verbindung hergestellt hat, ist man auf der Kommandozeile im entfernten Rechner eingeloggt – und kann diesen dann genauso bedienen als würde man davor sitzen. Und das Beste: Wie "Secure" schon andeutet, ist diese Verbindung komplett verschlüsselt.

SSH gibt Ihnen die Möglichkeit, "normale" Rechner fernzusteuern beziehungsweise auf ihnen zu arbeiten. So könnten Sie sich etwa mit einem Rechner im Büro verbinden oder per Fernzugriff mal eben Updates auf den Geräten von Kindern durchführen. Interessanter ist es aber gerade bei Heimanwendern für Netzwerkgeräte, die gar keinen eigenen Monitor und auch keine Eingabegeräte haben. Per SSH können Sie sich zum Beispiel auf die meisten NAS verbinden, auf Raspberry Pis und Router und hier und da sogar auf Webcams, Drucker und dergleichen.

Zwar geht es hier konkret um Ubuntu, aber das Schöne an SSH ist, dass es sehr universell und fast überall verfügbar ist. Auch vom Smartphone oder Windows aus ist es kein Problem, mal eben den Fernzugriff auf den Ubuntu-Rechner im Keller zu aktivieren. Oder auch umgekehrt!

Das Ergebnis einer Verbindung ist immer identisch: Sie landen in einer Kommandozeile des entfernten Rechners, angemeldet als einer der dortigen Nutzer.

Im Fall von Ubuntu ist SSH in Form von OpenSSH bereits installiert, Server und Client können sofort genutzt werden. Ansonsten beschränkt sich die Installation aber auch auf ein simples "apt-get install openssh-server openssh-client". Zum Testen benötigen Sie natürlich zwei Rechner, im einfachsten Fall zwei normale Ubuntu-Systeme. Der zweite Rechner darf selbstverständlich auch eine virtuelle Maschine sein. Achten Sie nur darauf, dass diese dann als Netzwerkschnittstelle die "Netzwerkbrücke" hat, damit die VM auch über das Netzwerk erreichbar ist.

Angenommen der entfernte Rechner hat die IP-Adresse "192.168.178.100" und es gibt dort einen Nutzer "admin", dann stellen Sie die Verbindung wie folgt her:

  1. Öffnen Sie einen Terminal über das Startmenü und geben Sie den Befehl "ssh admin@192.168.178.100" ein. Da Sie mit dem Server bislang noch keinen Kontakt hatten, "kennen" sich die Rechner natürlich noch nicht.
  2. Sie werden bei einer ersten Verbindung gefragt, ob Sie sich wirklich mit dem Rechner verbinden wollen und der angezeigten Signatur vertrauen. Sie könnten diese Signatur nun manuell mit dem Server abgleichen, aber so lange Sie sich mit bekannten, eigenen Rechnern verbinden, bestätigen Sie einfach, indem Sie "yes" tippen.
  3. Anschließend werden Sie nach dem Passwort des Nutzers "admin" gefragt – geben Sie hier das ganz normale Passwort ein, das Sie auch am Server direkt verwenden würden. Und damit befinden Sie sich auch schon in der Kommandozeile des Servers. Um diese wieder zu verlassen, tippen Sie "exit".

Links die Kommandozeile des Clients mit dem Anmeldevorgang, rechts die entfernte Kommandozeile des Servers (hier ein QNAP-NAS).

Sie können die Verbindung auch noch deutlich bequemer und/oder sicherer gestalten: Statt einer Name-Passwort-Kombination dürfen Sie auch einen Schlüssel nutzen. Das Prinzip ist eigentlich ganz einfach: Sie erstellen auf dem Client ein Schlüsselpaar aus öffentlichem und privatem Schlüssel. Der private Schlüssel muss geheim bleiben, da Sie mit diesem quasi die Tür zum entfernten Rechner aufschließen können. Der öffentliche Schlüssel ist im Grunde das Schlüsselloch, das Sie am Server in die Tür einbauen. Das Konzept ist sehr nah an echten Türen: Ihren Haustürschlüssel werden Sie tunlichst "geheim" halten, aber Ihr Schlüsselloch darf natürlich jeder sehen.

Starten Sie auf dem Client-Rechner eine Kommandozeile und anschließend die Schlüsselerstellung über "ssh-keygen" (für SSH-Schlüsselgenerator). Zunächst sollen Sie die Datei angeben, die erstellt wird - belassen Sie dort einfach die Vorgabe und bestätigen Sie mit [Enter]. Dann können Sie ein Passwort eingeben, um beim Verbindungsaufbau noch eine zusätzliche Schranke einzubauen. Wenn Sie das Passwort weglassen, also einfach mit [Enter] bestätigen, entfällt jegliche Passwortabfrage. Letztlich werden zwei Dateien im versteckten Verzeichnis ".ssh" unterhalb Ihres Nutzerverzeichnisses erstellt: "id_rsa" und "id_rsa.pub". Das "rsa" im Dateinamen steht für die verwendete Kryptographie, muss Sie aber nicht weiter beschäftigen. Die Dateiendung "pub" steht für "Public", ist also der öffentliche Schlüssel.

Um diesen nun zum Server zu kopieren, verwenden Sie folgenden Befehl: "ssh-copy-id -i .ssh/id_rsa.pub admin@192.168.178.100". Über das "-i" wird angegeben, dass die Identität kopiert werden soll, womit der folgend angegebene öffentliche Schlüssel gemeint ist. Kopiert wird natürlich via SSH, dieses Mal noch mit einer Name-Passwort-Kombination. Anschließend können Sie Verbindungen über den Befehl "ssh admin@192.168.178.100" aufbauen, ohne anschließend noch ein Passwort eingeben zu müssen (sofern Sie bei der Schlüsselerstellung nicht noch ein separates Passwort vergeben haben). Übrigens: Wenn Sie irgendwann mal Skripte laufen lassen möchten, die erst eine SSH-Verbindung aufbauen müssen, ist diese passwortlose Variante natürlich deutlich besser geeignet.

Und nur um alle Sicherheitsbedenken auszuräumen: Ein passwortloser Verbindungsaufbau ist nur möglich, wenn Ihr privater, geheimer Schlüssel in Form der Datei "id_rsa" auf dem Client-Rechner vorhanden ist.

Nun könnten Sie sich sagen: Wann brauche ich schon mal eine Kommandozeile? SSH kann aber noch viel mehr, wie zwei wirklich tolle, nützliche Beispiele zeigen sollen: X2Go und Xmouse. Xmouse ist eine clevere Android-App, die aus dem Smartphone/Tablet ein Eingabegerät für einen Ubuntu-Rechner macht. Sie können darüber via Fernzugriff Tastaturtasten senden, Fenster manipulieren und vor allem das Gerät als Touchpad, also als Mausersatz nutzen. Super ist das beispielsweise zum Zeichnen auf dem Rechner, wenn man kein teures Grafiktablett hat. Im Hintergrund werkeln hier vor allem zwei Dinge: Auf dem Ubuntu-Rechner läuft das Tool "Xdotool", welches unter anderem allerlei Tastaturkommandos simulieren kann und Befehle, die vom Smartphone kommen, umsetzt. Die eigentliche Verbindung läuft über SSH! Der große Vorteil daran: Auf dem Ubuntu-Rechner muss kein spezieller Xmouse-Server laufen, sondern nur SSH, das sowieso standardmäßig vorhanden ist.

Xmouse ist eine clevere Fernbedienung, die über SSH funktioniert.

Das eigentliche Killer-Argument ist aber unter dem Stichwort "X11 Forwarding" zu finden. X/X11 steht unter Linux gemeinhin für grafische Anwendungen – und auch diese lassen sich über SSH übertragen. Sie könnten also zum Beispiel ein Bildbearbeitungsprogramm wie Gimp auf dem entfernten Rechner laufen lassen, aber eben aus der Ferne steuern. Das Gimp-Fenster sehen Sie dann einfach nahtlos auf dem lokalen Desktop. Und das funktioniert auch unter Windows! Manuell ist es durchaus mit ein wenig Frickelei verbunden, aber das wunderbare Open-Source-Tool X2Go (übrigens ein Projekt aus Deutschland) macht es einfach: X2Go muss auf Client und Server installiert werden und ermöglicht dann über eine recht simple grafische Oberfläche, Verbindungen herzustellen, die wahlweise einzelne Programme oder gleich den ganzen Desktop des entfernten Rechners auf dem lokalen Monitor anzeigen.

Mit X2Go können Sie komplette entfernte Desktops im Fenster anzeigen lassen.

Wenn Sie sich mit dem Thema SSH befassen, stoßen Sie auch relativ schnell auf das Stichwort "OpenSSH". Was sehr ähnlich klingt, ist auch sehr ähnlich - aber doch anders. Als SSH entwickelt wurde, war es ursprünglich ein Open-Source-Projekt. Allerdings hat sich daraus dann eine Firma gegründet, sodass das ursprüngliche SSH-1-Protokoll schnell immer mehr privatisiert wurde. Damit SSH weiterhin für alle frei nutzbar bleibt, hat die Internetgemeinde auf Basis des ursprünglichen Protokolls OpenSSH entwickelt.

Inzwischen ist SSH-1 veraltet, sodass SSH-2 entwickelt wurde. Die Open-Source-Gemeinde hat aber auch an OpenSSH gearbeitet, sodass es jetzt diese beiden Konkurrenzprodukte gibt. OpenSSH ist gemeinfrei und kostenlos nutzbar, hat aber bei Fehlern und Fragen nur Unterstützung durch die Internet-Community. SSH-2 ist kostenpflichtig, hat aber durch die Vermarktung durch die Firma einen entsprechenden 24-Stunden-Support und ist damit für Firmen wesentlich besser geeignet.

Mehr Infos

(como)