Was ist SSH?

Ein Protokoll (und ein Befehl), das die Kommunikation verschlüsselt, um sich über ein Netzwerk an einem anderen Computer anzumelden und dort Befehle auszuführen. Der Server wartet standardmäßig auf TCP-Port 22. Zur Authentifizierung wird neben Passwörtern häufig die Public-Key-Authentifizierung verwendet: Der öffentliche Schlüssel zum eigenen privaten Schlüssel wird in ~/.ssh/authorized_keys auf dem Server eingetragen. Über dieselbe Verbindung lassen sich mit scp oder rsync Dateien übertragen und Ports weiterleiten.

Japanische Bezeichnung: SSH

„SSH“ kommt in 3 Übungsfragen aus 2 Themen vor, z. B. Grundlagen von Linux und der Kommandozeile, Grundlagen der Computernetzwerke.

Fachgebiet: Grundlagen von Linux und der Kommandozeile

Wie die Public-Key-Authentifizierung funktioniert

Mit ssh-keygen erzeugt man ein Paar aus privatem und öffentlichem Schlüssel und trägt nur den öffentlichen Schlüssel (die .pub-Datei) in authorized_keys auf dem Server ein. Beim Verbinden erstellt der Client mit dem privaten Schlüssel eine Signatur und legt sie dem Server vor, der sie mit dem eingetragenen öffentlichen Schlüssel prüft; der private Schlüssel selbst wird also nie über das Netzwerk übertragen. Der private Schlüssel wird mit einer Passphrase geschützt, und wenn man ihn ssh-agent überlässt, muss man sie nicht bei jeder Verbindung eingeben.

Prüfen des Servers

Bei der ersten Verbindung zeigt ssh den Fingerabdruck (Fingerprint) des Host-Schlüssels des Servers und speichert ihn nach der Bestätigung in ~/.ssh/known_hosts. Wird danach ein Schlüssel vorgelegt, der von der Aufzeichnung abweicht, warnt ssh und bricht ab, sodass man einen vorgetäuschten Server bemerkt. Erscheint die Warnung ohne Grund wie etwa einen ausgetauschten Server, darf man die Verbindung nicht einfach fortsetzen.

Einsatz in der Entwicklungspraxis

Vom eigenen PC meldet man sich per ssh an den Rechenservern an, auf denen EDA-Werkzeuge laufen, startet Simulationen und prüft Ergebnisse. Trägt man Host-Aliasse, Benutzernamen, Schlüsseldateien und Sprungserver (ProxyJump) in ~/.ssh/config ein, genügt zum Verbinden ssh server1. Werkzeuge mit grafischer Oberfläche nutzt man in Kombination mit X11-Forwarding oder Remote-Desktop-Mechanismen.

Jetzt üben: Fragen zu SSH

Auf einem per SSH erreichten Server wurde eine langwierige Berechnung mit „./run.sh &“ gestartet; als die Verbindung getrennt wurde, brach auch die Berechnung ab. Wie startet man sie am besten, damit sie nach dem Trennen der Verbindung weiterläuft?

  1. A./run.sh > run.log 2>&1 &
  2. Bnice -n 19 ./run.sh > run.log 2>&1 &
  3. Cnohup ./run.sh > run.log 2>&1 &
Antwort und Erläuterung anzeigen

Antwort: C. nohup ./run.sh > run.log 2>&1 &

Bricht die Verbindung ab, erhält die Shell SIGHUP, das meldet, dass das Terminal aufgelegt hat (Hangup), und Shells wie bash senden SIGHUP auch an ihre Jobs. Die Standardreaktion auf SIGHUP ist das Beenden, also werden auch Hintergrundjobs beendet. nohup startet den Befehl so, dass er SIGHUP ignoriert, und wenn seine Ausgabe in eine Datei geht, läuft die Berechnung nach dem Trennen der Verbindung weiter. Wird er ohne Umleitung der Ausgabe aus einem Terminal gestartet, schreibt nohup die Ausgabe in eine Datei namens nohup.out. Verbreitet ist auch, ein Terminal-Multiplexing-Programm wie tmux oder screen zu verwenden und sich später wieder mit derselben Sitzung zu verbinden.

Häufige Fragen

Die Verbindung scheitert mit „Permission denied (publickey)“. Was sollte man prüfen?

Man prüft, ob der öffentliche Schlüssel zum verwendeten privaten Schlüssel in ~/.ssh/authorized_keys auf dem Server eingetragen ist und ob der Benutzername stimmt. Sind die Rechte von ~/.ssh oder authorized_keys auf dem Server zu großzügig (für andere beschreibbar), wird der Schlüssel aus Sicherheitsgründen unter Umständen nicht verwendet; daher setzt man etwa ~/.ssh auf 700 und authorized_keys auf 600. Mit ssh -v sieht man, welche Schlüssel ausprobiert wurden.

Wann verwendet man scp und wann rsync?

Beide übertragen Dateien über ssh. scp eignet sich für einfache Kopien, während rsync nur die Unterschiede zum Ziel sendet und daher effizient ist, um große Verzeichnisse wiederholt zu synchronisieren oder abgebrochene Übertragungen fortzusetzen. Mit rsync -av --delete gleicht man das Ziel an die Quelle an, doch Vorsicht: --delete löscht Dateien, die nur am Ziel existieren.

„SSH“ in den Erläuterungen

Fragen mit „SSH“ (3)

  1. Auf einem per SSH erreichten Server wurde eine langwierige Berechnung mit „./run.sh &“ gestartet; als die Verbindung getrennt wurde, brach auch die Berechnung ab. Wie startet man sie am besten, damit sie nach dem Trennen der Verbindung weiterläuft?
  2. Auf dem eigenen PC wurde mit ssh-keygen ein Schlüsselpaar für die Public-Key-Authentifizierung erzeugt; nun soll die Verbindung zum Server server1 per ssh ohne Passwort möglich werden. Wie werden die Schlüssel richtig abgelegt?
  3. Welche Zuordnung von Protokollen zu den Standardportnummern ihrer Server ist richtig?

Verwandte Begriffe

Shell Ein-/Ausgabeumleitung Portnummer HTTP (Hypertext Transfer Protocol) DNS (Domain Name System) cron Git grep Hardlink Inode

Zur Glossarübersicht