Arbeiten mit SSH-Schlüsselpaaren
Literaturhinweis / Further Reading
Inhalt
Allgemeines
Die Secure Shell (SSH) ermöglicht den verschlüsselten Zugang zur Kommadozeile auf HPC-Systemen sowie den verschlüsselten Datentransfer. Die Authentifizierung kann über Schlüsselpaare anstelle der Eingabe eines Passwortes erfolgen. SSH-Schlüsselpaare bestehen aus einem privaten und einem öffentlichen Schlüssel. Der öffentliche Schlüssel wird auf dem HPC-System hinterlegt, der private Schlüssel ist besonders zu schützen:
- Der private Schlüssel darf nicht in fremde Hände gelangen: Wer im Besitz des privaten Schlüssel ist, hat Zugang zu Systemen, auf denen der dazugehörige öffentliche Schlüssel hinterlegt ist! Die (Datei-) Zugriffsrechte auf private Schlüssel müssen so gesetzt sein, dass nur der Eigentümer sie lesen kann.
- Aufgrund dessen soll der private Schlüssel durch eine passphrase gesichert werden. Die passphrase wird bei der Erzeugung des Schlüsselpaares eingegeben. Sie ist wie ein Passwort auszuwählen und zu behandeln. Um die Sicherheit zu erhöhen, kann man eine lange passphrase wählen. Beim Arbeiten mit einem Agenten (engl. agent) braucht die passphrase nur einmal pro Sitzung eingegeben zu werden, um beliebig vielen SSH-Verbindungen öffnen und SSH-Datentransfers anstoßen zu können.
- Es sollen Schlüssel mit vielen Bits erzeugt werden (Minimum 2048).
- Es ist wünschenswert, für jeden Dienst (jedes HPC-System) ein separates Schlüsselpaar zu erzeugen.
Im Folgenden wird erläutert,
- wie Schlüsselpaare erzeugt werden,
- wie man Schlüssel nutzt (für eine einzelne Verbindung),
- wie man mit Agenten arbeitet (für viele Verbindungen),
- wie man weniger zu tippen braucht (nur für OpenSSH).
OpenSSH (Linux, Mac OS)
Schlüsselpaar vom Typ RSA mit einer Länge von 4096 Bit erzeugen
(man kann auch den neueren Typ -t ed25519
verwenden):
shell$ssh-keygen -t rsa -b 4096 -f $HOME/.ssh/id_rsa_hummel
Generating public/private rsa key pair. Enter file in which to save the key (/home/user/.ssh/id_rsa_hummel): Enter passphrase (empty for no passphrase): ************************ Enter same passphrase again: ************************ Your identification has been saved in /home/user/.ssh/id_rsa_hummel. Yourpublic key
has been saved in/home/user/.ssh/id_rsa_hummel.pub
. The key fingerprint is: b8:df:d1:14:48:03:00:68:5e:46:9c:1a:b2:b2:d4:f4 user@host The key's randomart image is: +--[ RSA 4096]----+ | +oo....o | |. +.= . o | | =o=. . . | |o.o. E . . | |o. . S . | |. . o | | . . . | | . . . | | . . | +-----------------+
Schlüssel verwenden:
shell$ ssh -i $HOME/.ssh/id_rsa_hummel yourHummelUsername@hummel1.rrz.uni-hamburg.de
Enter passphrase for key '/home/user/.ssh/id_rsa_hummel': ************************
...
Agenten einsetzen:
shell$eval `ssh-agent`
Agent pid is 6789 shell$ssh-add $HOME/.ssh/id_rsa_hummel
Enter passphrase for key '/home/user/.ssh/id_rsa_hummel': ************************ Identity added: /home/user/.ssh/id_rsa_hummel (/home/user/.ssh/id_rsa_hummel) shell$ssh yourHummelUsername@hummel1.rrz.uni-hamburg.de
...
Auf einigen Systeme wird der Agent automatisch gestartet (mit Abfrage der passphrase in einem separaten Fenster) und das einfache ssh-Kommando reicht aus:
shell$ ssh yourHummelUsername@hummel1.rrz.uni-hamburg.de
In der Datei $HOME/.ssh/config
kann man Verbindungsdaten
eintragen. Danach werden diese Angaben auf der Kommandozeile nicht
mehr benötigt. Zum Beispiel genügt nach dem Eintrag
Host hummel1 Hostname hummel1.rrz.uni-hamburg.de IdentityFile ~/.ssh/id_rsa_hummel User yourHummelUsernamedie vereinfachte Kommadozeile (
yourHummelUsername@
und -i...
entfallen):
shell$ ssh hummel1
PuTTY (Windows)
Unter Windows kann man SSH-Schlüsselpaare mit PuTTYgen erzeugen:
- Auswählen: Type of key to generate: SSH-2 RSA (SSH-1 nicht auswählen!)
- Eintragen: Number of bits in a generated key: 4096
- alternativ: Type of key to generate: EdDSA (Ed25519 255 bits)
- Drücken: Generate
- Eintragen: Key passphrase
- Eintragen: Confirm passphrase
- Drücken: Save private key
- Drücken: Save public key
- Merken: Speicherort der Schlüssel!
Schlüssel verwenden:
- In PuTTY wird die Schlüsseldatei unter Connection/SSH/Auth eingetragen bzw. ausgewählt.
Agenten einsetzen:
- PuTTY stellt als Agenten Pageant bereit.
- Pageant muss mit dem Speicherort der Schüsseldatei gestartet werden, z.B.:
- Den Speicherort kann man auch im Ziel einer Verknüpfung eintragen.
- Pageant funktioniert auch mit anderen SSH-basierten Programmen wie FileZilla oder MobaXterm.