SSH

SSH (Secure Shell) ist ein Protokoll, das ähnlich Telnet das Öffnen einer Kommandozeile auf einem entfernten Rechner erlaubt. SSH arbeitet sowohl beim Verbindungsaufbau als auch beim eigentlichen Datenaustausch verschlüsselt. Auf dem Zielrechner läuft ein SSH-Server, auf dem eigenen Rechner ein SSH-Client. Bei Unix-Betriebssystemen wie Solaris und Linux gehört SSH im Prinzip zur Standardausstattung. Für Windows bietet sich z.B. Cygwin an (Anleitung). Als Windows-Client hat sich außerdem PuTTY bewährt. Es gibt allerdings auch gute Alternativen.

Für Putty gibt es noch eine USB-Stick Variation, die die Konfigurationsdateien nicht mehr in der Registry ablegt, sondern in einzelnen Dateien.

SSH kann aber noch mehr. Nicht nur die entfernte Kommandozeile kann lokal angezeigt und bedient werden, sondern auch grafische Applikationen (X-Forwarding). Außerdem können lokale und entfernte TCP-Ports weitergeleitet werden (Portforwarding) sowie Dateien kopiert werden (über Secure Copy, kurz SCP, oder FTP über SSH, kurz SFTP).

Grafische Programme

Startet man eine SSH-Verbindung mit dem Parameter -X (oder aktiviert man in PuTTY X11 forwarding, in aktuellen Versionen zu finden unter Connection/SSH/Tunnels), werden X-Applikationen, die man über die SSH-getunnelte Kommandozeile startet, auf dem lokalen X-Server angezeigt. Dazu muss natürlich ein X-Server laufen - unter Unix/Linux kein Problem. Unter Windows gibt es mehrere Möglichkeiten, kostenlos z.B. mit Xming oder Cygwin/X. Portforwarding

SSH Server der RBG/ISP

Derzeit sind sechs SSH Login Rechner der RBG/ISP aktiv:

  • clientssh1.rbg.informatik.tu-darmstadt.de - ProxMox
  • clientssh2.rbg.informatik.tu-darmstadt.de - ProxMox
  • clientssh3.rbg.informatik.tu-darmstadt.de - ProxMox
  • clientssh4.rbg.informatik.tu-darmstadt.de - ProxMox
  • clientssh5.rbg.informatik.tu-darmstadt.de - ProxMox
  • clientssh-arm.rbg.informatik.tu-darmstadt.de - Hardware ARM

Nach dreimaligem falschen Login wird die jeweilige IP Adresse für 5 Minuten gesperrt.

SSH Schlüssel erzeugen

Um SSH Schlüssel auf der Linux-Shell zu erzeugen:

  • Für RSA
~$ ssh-keygen -b 4096 -t rsa
  • Für ECDSA
~$ ssh-keygen -b 384 -t ecdsa
  • Für ED25519
~$ ssh-keygen -t ed25519

Der DSA Algorithmus sollte nicht mehr verwendet werden, da seine Schlüssellänge auf 1024Bit begrenzt ist.

Dieses Vorgehen empfiehlt sich auch bei MacOS.

SSH Schlüssellänge

Maßgeblich für die Sicherheit des SSH Schlüssel, ist die Länge die in Bit angegeben wird. In der Standardeinstellung ist die Länge 1024Bit, welches nicht mehr unbedingt sicher ist. Daher sollten 2048Bit bzw. 4096Bit den Vorzug gegeben werden.

Die Länge lässt sich mittels ssh-keygen prüfen:

  • Für RSA Schlüssel
~$ ssh-keygen -l -f ~/.ssh/id_rsa

Die Zahl am Anfang zeigt die Länge des Schlüssels

SSH-Hilfe

Weitere Informationen zu SSH-Schlüsseln, findet sich auf dieser Seite.

SSH-Hilfe für Putty

Um von Windows aus auf die Clientssh Rechner zu gelangen, kann z. B. Putty verwendet werden.

SSH-Schlüssel generieren

Wenn Putty (z. B. per MSI-Installer für Windows) installiert ist, kann zur Schlüsselerzeugung das Programm PUTTYgen gestartet werden.

Unten kann die Standardeinstellung RSA eingestellt bleiben. Nun klickt man auf Generate und bewegt die Maus zufällig über die leere Fläche unter dem Fortschrittsbalken, bis dieser das Ende erreicht hat.

Nun wurde ein Schlüssel erzeugt, der über die Schaltfläche Save private key (am besten, aber nicht zwingend in C:\Users\<username>\.ssh\) gespeichert werden kann. Diese Datei darf auf keinen Fall weitergegeben werden!

Nun kopiert man den Text im Feld unter Public key for pasting into OpenSSH authorized_keys file: in die Zwischenablage. Anschließend meldet man sich in der ISP-Accountverwaltung mithilfe des HRZ-SSOs an und klickt anschließend auf die Schaltfläche SSH Public-Key registrieren. Anschließend wird eine E-Mail versendet, die einen Link enthält, mitdessen Hilfe man ein Feld bekommt, indem man einen neuen Public Key eingeben kann. In dieses fügt man nun den Schlüssel aus der Zwischenablage ein und klickt auf SSH-Key übernehmen.

SSH-Verbindung über PUTTY

Um sich unter Windows per SSH auf die Poolrechner zu schalten, startet man zunächst PUTTY.

Dort trägt man unter Host Name (or IP address) einen der oben genannten Server (z. B. clientssh1.rbg.informatik.tu-darmstadt.de) ein. Darunter wählt man SSH.

Nun wechselt man auf der linken Seite zum Abschnitt Connection → SSH → Auth und wählt unter Private key file for authentication: die zuvor gespeicherte private Schlüsseldatei aus.

Über Window auf der linken Seite kann man die nun gesetzten Einstellungen auch speichern.

Anschließend klickt man auf Open. Nun öffnet sich ein Fenster, indem man den Fingerabdruck des Servers mit dem auf dieser Webseite zu findenden abgleichen und anschließend bestätigen sollte. Ein Konsolenfenster öffnet sich. Nach Eingabe der TU-ID steht die Verbindung. Durch den Befehl exit kann diese wieder beendet werden.

SSH Fingerprints

Wer den Schlüssel unserer SSH Servers überprüfen möchte, kann dies mithilfe der Fingerprints. Diese lauten für die verschiedenen Images:

* buster (derzeit auf clientssh1-5)

ECDSA-256   SHA256:zeKR30Lq/eaPe7eA/cDLuL4IgnyFby1mJ5f33QsGJsQ
ED25519-256 SHA256:sQ4CSPUgAAEpdB711AyfnsnRKV/jfoy7uK+LK4OE8pM
RSA-2048    SHA256:QBDFW3W5ICxvkbPr3zFHqwE3xLzupEqKYTbGIksQTxo

* arm (clientssh-arm):

ECDSA-256   SHA256:JqsPhgaeQmQff9wHnAEgDOf9NI9XNNt3yA0YU4JRcGE
ED25519-256 SHA256:SxplNENSJpd166uoqOVgFYaLtReCrh/sEutx3m37Fz8
RSA-2048    SHA256:bFOBv3pYwIGgTfnxDv0UHEInlLmblCw8meVRDhZWd7k

SSH Schlüssel bereitstellen / hochladen

Um den öffentlichen Schlüssel zu hinterlegen, gibt es zwei Möglichkeiten:

  • Am Poolrechner nach ~/.ssh/authorized_keys kopieren
  • Über das Webfrontent von Support den Schlüssel hochladen. Es dauert dann ein paar Minuten, bis der Schlüssel im Heimatverzeichnis hinterlegt wurde. (siehe Abschnitt SSH-Schlüssel generieren)

Beispiele und weitere Tipps

Zum Thema SSH-Tunnel hat Thomas Binder bereits eine ausführliche Anleitung geschrieben, die auch die Erzeugung und Benutzung von RSA-Schlüsseln als Ersatz für die Passwort-Authentifizierung beinhaltet.

In PuTTY findet sich der Dialog zur Einstellung von Portforwarding in aktuellen Versionen unter Connection/SSH/Tunnels. Dazu macht man folgenden Einstellungen:

Das entspricht einem Portforwarding vom lokalen Port 8080 auf Port 80 auf dem www.informatik.tu-darmstadt.de vom entfernten Rechner aus. Gibt man nun im Browser localhost:8080www.informatik.tu-darmstadt.de ein, landet man quasi auf - aber so, als ob man von dem Rechner gekommen wäre, zu dem man die SSH-Verbindung aufgebaut hat. Das Portforwarding funktioniert natürlich nur so lange, wie die SSH-Verbindung steht. Secure Copy (SCP)

SCP erlaubt das verschlüsselte Kopieren von Dateien, wenn auf dem Zielrechner ein SSH-Server installiert ist. Das ist z.B. auf den Rechnern clientssh1 und clientssh2 der RBG/ISP der Fall. So kann man z.B. Dateien von daheim abrufen oder auf einen der Rechner in der Uni transferieren.

  • Ein paar Beispiele:
Befehl Bedeutung
scp vortrag.pdf user@clientssh1: kopiert vortrag.pdf (lokal) in das Home-Verzeichnis von Benutzer user (Uni)
scp vortrag.pdf user@clientssh1:/media/tmp/user kopiert vortrag.pdf (lokal) in das temporäre Verzeichnis von Benutzer user(Uni). Dieses muss existieren, sonst wird vortrag.pdf in user umbenannt (Uni)
scp user@clientssh1:uebung2.pdf /tmp kopiert uebung2.pdf vom Home-Verzeichnis des Benutzers user (Uni) nach /tmp (lokal)
scp user1@clientssh1:info.txt user2@clientssh1: kopiert info.txt aus dem Home-Verzeichnis von Benutzer user1 (Uni) in das Home-Verzeichnis von Benutzer user2 (Uni)

In jedem Fall muss natürlich das Passwort der angegebenen Benutzer auf Anfrage eingegeben werden. Anstelle von clientssh1 kann auch clientssh2 benutzt werden. SFTP und FTPS

SFTP entspricht FTP über SSH. Auch diese Variante wird unterstützt. Clients sind etwa WinSCP oder gFTP (s.u.). Zu beachten ist hierbei, dass ggf. Einträge in der .bashrc und ähnlicher Dateien (z.B. .profile) dazu führen können, dass der Verbindungsaufbau fehl schlägt. Konkret können das Ausgaben mit echo oder eine andere Shell sein.

FTPS dagegen bedeutet FTP über SSL bzw. TLS. Diese Zugriffsart wird nicht unterstützt. Programme

Unter UNIX/Linux sind meist direkt die Kommandozeilenprogramme ssh für den Verbindungsaufbau (ggf. mit Portforwarding, siehe Anleitung zu SSH-Tunnels) und scp für den Dateitransfer installiert. Als grafische Alternative bietet sich gFTP (mit OpenSSL-Bindings) an; KDE-Programme wie Krusader können zudem die KIO-Slaves fish für SCP- und sftp für SFTP-Zugriffe (fish:user@host und sftp:user@host) nutzen.

Unter Windows bietet das PuTTY-Komplettpaket äquivalente Kommandozeilenprogramme für den Dateitransfer wie pscp. Wesentlich komfortabler ist allerdings das Arbeiten mit WinSCP, einer grafischen Anwendung, die neben SCP auch SFTP (nicht jedoch FTP!) unterstützt.


Andere Sprachen
Übersetzungen dieser Seite: