ssh - secure Shell

Was ist ssh?

ssh steht für secure shell und ist ein Programm, um sich auf einen entfernten Rechner einzuloggen und dort Befehle auszuführen. ssh dagegen bietet eine sicher verschlüsselte Kommunikation sogar über ein unsicheres Netzwerk.

Zusammen mit ssh ist im Mathematiknetz das Programm scp installiert, mit welchem Dateien zwischen zwei Rechnern verschlüsselt kopiert werden können. (Nähere Informationen finden Sie weiter unten bei der Erläuterung der "Alternativen zu ftp".)
 

Wie benutze ich ssh?

ssh können Sie innerhalb der Mathematiknetze ohne weitere Vorbereitungen benutzen. Der folgende Befehl macht eine verschlüsselte Verbindung zum Rechner kepler auf und will den Benutzernamen des lokalen Rechners anmelden:

$ ssh kepler

Wenn Sie einen anderen Benutzernamen als den auf dem lokalen Computer nutzen wollen, geht dies wie folgt (Angenommen der Benutzer heißt user):

$ ssh user@kepler

Der entfernte Computer benötigt dann im Normalfall das Passwort des anzumeldenden Benutzers user

Für welche Betriebssysteme gibt es ssh?

Grundsätzlich gibt es für jedes Betriebssystem eine Implementierung von ssh.

Unter Linux ist OpenSSH über das Terminal mit dem Befehl ssh einsetzbar.
Unter Windows steht das Programm PuTTY zur Verfügung. Weiterhin hat Microsoft seit der Version 1809 ssh mit in Windows 10 eingebaut. Genutzt werden kann ssh ähnlich wie unter Linux über die Kommandozeile (cmd) oder die PowerShell.

Wie erstelle ich eine public-key Authentisierung mit ssh?

1.Falls Sie noch kein $HOME/.ssh Verzeichnis haben, müssen sie diesen erstellen mit:

cd ~

mkdir .ssh

chmod 700 .ssh

2.Um ein Schlüssel-Paar zu generieren, müssen Sie

gudrun@vieta[~]>>ssh-keygen -b 2048 -t dsa -f identity

eingeben. Dabei werden Sie nach einem Passwort für den Schlüssel gefragt. Ein Passwort kann angegeben werden, muß aber nicht.

gudrun@vieta[~]>>ssh-keygen -b 2048 -t das -f identity

Generating public/private das key pair.

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

Your identification has been saved in /gauss/user/gudrun/.ssh/id_dsa. Your public key has been saved in /gauss/user/gudrun/.ssh/id_dsa.pub.

The key fingerprint is: 0f:9d:ff:48:59:42:71:10:00:f9:09:a8:55:34:ab:8a mein schlüssel

Es werden zwei Schlüssel erzeugt.

identity.pub -> öffentlicher Schlüssel

identity -> geheimer Schlüssel

Welche Alternativen gibt es zu ftp?

Bei ftp werden die Daten im Klartext über das Netzwerk transportiert. Als Alternative können Sie scp benutzen. Das folgende Beispiel kopiert die Datei test.txt aus dem aktuellen Verzeichnis des lokalen Computers auf den Rechner kepler in das Homeverzeichnis des Benuzters user:

user@laptop [~]$ scp test.txt kepler:

Soll umgekehrt die Datei test.txt von dem Benutzer software vom Rechner kepler in das aktuelle lokale Verzeichnis kopiert werden, so lautet der Befehl:

$ scp software@kepler:test.txt

Wie bei dem Befehl cp wird auch bei scp das rekursive Kopieren von ganzen Verzeichnissen mit der Option -r unterstützt.

Zur Funktionsweise von ssh

Beim Einloggen von Rechner A auf Rechner B überprüft ssh zuerst den sogenannten host_key. Damit wird sichergestellt, dass er sich bei Rechner B tatsächlich um Rechner B handelt und nicht um einen Rechner, der vorgibt, Rechner B zu sein. Für diesen Mechanismus wird eine Datei mit dem Namen known_hosts verwendet. Dabei sucht ssh zunächst nach einer globalen zentral verwalteten Datei, in die der Systemadministrator die host_keys nach der Installation der Rechner einträgt. Wird dort kein Eintrag für den entsprechenden Rechner gefunden, so wird die lokale Datei des jeweiligen Benutzers unter $HOME/.ssh/known_hosts überprüft. Sofern die Identität des Rechners B anhand dieser Dateien sichergestellt werden kann, werden Rechner A und Rechner B verbunden. Ist Rechner B bisher noch dem System unbekannt, bekommen sie folgende Abfrage:

The authenticity of host 'kepler.math.uni-paderborn.de (131.234.116.31)' can't be established.
ECDSA key fingerprint is SHA256:X.
Are you sure you want to continue connecting (yes/no)?

Hinweis: Die aktuellen Fingerprints unserer Server finden Sie unter Fingerprints. Verbinden Sie sich stets nur zu Servern, denen Sie vertrauen können. Wenn Sie yes wählen, so wird der host_key des Rechners B automatisch in Ihrer persönlichen Datei $HOME/.ssh/known_hosts abgelegt. Beim nächsten Einloggen auf dem Rechner B ist der host_key damit bekannt und Sie erhalten die obige Fehlermeldung nicht mehr. Damit ist die Verbindung zwischen Rechner A und Rechner B hergestellt. Als nächstes wird die Authentisierung des Benutzers vorgenommen. Dazu verwendet ssh entweder das PublicKey-Verfahren oder fragt nach dem Passwort. Nach erfolgter Authentisierung steht die Shell zur Verfügung.

ssh-Verbindung ohne Eingabe des Passwortes

Wenn Sie bei der Benutzung von ssh (oder scp) nicht immer Ihr Passwort eingeben möchten, so müssen Sie den öffentlichen Schlüssel ihres ssh-keys in die Datei ~/.ssh/authorized_keys (als eine Zeile) eintragen.

Wo finde ich weitere Informationen?

Eine detaillierte Dokumentation der einzelnen Kommandos findet man in den entsprechenden man-Pages.