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. Es ersetzt die Programme telnet, rlogin und rsh, die sämtliche Verbindungsdaten (insbesondere Passwörter) im Klartext über das Netzwerk transportieren. ssh dagegen bietet eine sichere, da verschlüsselte, Kommunikation über ein unsicheres Netzwerk. Zusätzlich hat ssh den Vorteil, dass automatisch X11-Verbindungen mit Zugriff auf das lokale Display unterstützt werden, d.h. Sie brauchen dies nicht explizit (z.B. mit xauth oder xhost) zu erlauben. Zusammen mit ssh ist im Mathematiknetz das Programm scp installiert, mit dem Daten zwischen zwei Rechnern auf sichere Weise 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 weiter Vorbereitungen und ohne Probleme benutzen. Der folgende Befehl macht eine verschlüsselte Verbindung zum Rechner kepler auf und will den Benutzer software anmelden:

gudrun@vieta[~]>>ssh kepler -l software

software's password:

No mail.

software@kepler[~]>>

Wenn Sie auf beiden Rechnern den gleichen Benutzernamen haben, können Sie die Option -l weglassen:

gudrun@vieta[~]>>ssh kepler

gudrun's password:

No mail.

gudrun@kepler[~]>>




Für welche Plattformen gibt es ssh?

Eine freie Implementierung von ssh ist OpenSSH. OpenSSH kann auf verschiedene Betriebssysteme eingesetzt werden. Für Windows ist eine freie komfortable Alternative PuTTY.


Kann ich weiterhin telnet/rlogin/rsh benutzen?

Innerhalb des Mathematiknetzes - nein!

Wenn Sie sich von einem Mathematikrechner auf einen nicht in unserem Netz befindlichen Rechner einloggen wollen, fragen Sie nach, ob dort auch ssh installiert ist oder werden kann. Benutzen Sie die unsicheren Programme wie telnet nur im Notfall. Wenn Sie sich von einem auswärtigen Rechner in das Mathematiknetz einloggen wollen, lesen Sie bitte die Hinweise zum Einloggen in das Mathenetz von ausserhalb in den FAQs.


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?

Wie telnet und rlogin/rsh werden auch bei ftp die Daten im Klartext über das Netzwerk transportiert. Deshalb ist die Benutzung von ftp mit ihrem Standardpasswort innerhalb des Mathematiknetzes nicht zugelassen. Als Alternativen können Sie scp benutzen. Das folgende Beispiel kopiert die Dateien test, die sich auf dem Rechner vieta unter /vieta/user/gudrun/test befindet, auf den Rechner tanne in das Heimatverzeichnis des Benuzters gudrun:

gudrun@vieta[~]>>pwd /vieta/user/gudrun gudrun@vieta[~]>>scp test tanne:

Soll umgekehrt die Datei test von dem Benutzer software vom Rechner tanne kopiert werden, so lautet der Befehl:

gudrun@vieta[~]>>scp software@tanne:test

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

Wenn scp nicht funktioniert oder aber für den Datentransfer mit Rechnern ausserhalb des Mathematiknetzes stellen wir sogenannte Einmal-Passworte zur Verfügung. Zu deren Erzeugung und Benutzung lesen Sie bitte die Hinweise zum Einloggen in das Mathenetz von ausserhalb in den FAQs.


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 Datei sichergestellt werden kann, werden Rechber A und Rechner B verbunden. Kann die Identität nicht gewährleistet werden, so erhalten Sie die Fehlermeldung 1. Sie können dann selbst wählen, ob Sie sich trotzdem verbinden wollen oder nicht. Wählen Sie ja, 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 dann bekannt und Sie erhalten die obige Fehlermeldung nich mehr. Damit ist die Verbindung zwischen Rechner A und Rechner B hergestellt.

Rechner B generiert nun eine Zufallszahl, die an Rechner A verschlüsselt übertragen wird. Anschliessend benutzen beide Rechner Zufallszahl, um die gesamte weitere Sitzung zu verschlüsseln.

Als nächstes wird die Authentisierung des Benutzers vorgenommen. Dazu verwendet ssh in der hier installierten Version entweder das Public Key-Verfahren DSA oder ssh fragt nach dem Passwort. Im ersten Fall benutzt ssh das DSA-Schlüssel-Paar im Verzeichnis $HOME/.ssh/. Dabei bezeichnet id_dsa den geheimen Schlüssel und id_dsa.pub den öffentlichen Schlüssel. Um sich per DSA authentisieren zu können, muss der öffentliche Schlüssel in der Datei $HOME/.ssh/authorized_keys eingetragen sein (siehe auch Einloggen ohne Angabe des Passwortes).

Wen kein Verzeichniss $HOME/.ssh oder keine Schlüssel existieren, so wird nach dem Passwort gefragt. Der gesamte Datenverkehr (also bereits die Übermittlung Ihres Benutzernamens und des Passwortes) wird dabei aber bereits automatisch verschlüsselt ohne dass ein Benuzter davon etwas bemerkt.


Was tun bei Warnungen oder Fehlermeldungen bei ssh

Bei der Verwendung von ssh gibt es im wesentlichen drei Fehlermeldungen:

Fehlermeldung 1:

gudrun@vieta[~]>>ssh maclaurin -l gudrun

Secure connection to maclaurin refused; reverting to insecure method. Using rsh. WARNING: Connection will not be encrypted.

Hier ist auf dem Zielrechner ssh nicht oder nicht richtig installiert. Bitte informieren Sie den Systemverwalter des Zielrechners und bitten Sie um die Installation von ssh. Ihre Kommunikation erfolgt in diesem Fall unverschlüsselt.

Fehlermeldung 2:

Bekommen Sie diese Meldung innerhalb des Mathematiknetzes (Start- und Zielrechner unterliegen der Verwaltung der RBG Mathematik), so informieren Sie bitte den Rechnerbetrieb. Im diesem Fall kann ssh die Identität des Zielrechners nicht sicherstellen. Sie müssen selbst entscheiden, ob Sie den Zielrechner für vertrauenswürdig halten. Falls ja, verfahren Sie wie folgt: Es ist ssh auf dem Zielrechner (hier tanne) installiert, aber der host_key des Rechners tanne ist nicht bekannt. Wenn Sie mit yes antworten, wird der host_key in der Datei $HOME/.ssh/known_hosts auf Ihrem Startrechner (hier vieta) automatisch eingetragen:

gudrun@vieta[~]>>cat $HOME/.ssh/known_hosts | grep tanne tanne,131.234.18.22 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEAwroyNr3LIwMlI0lOzT+c9es0i6WShOhG4AG7pxNAE7Q5AYBUyv mWnS/tXagb/Oo6bwoKOhfypCqBTkIH344bv4K8sA4H3Ij7SDjNjmU43a6b8QIRnUt1CsZ0dmrSw0PFejvx9eVEGmdrvwqu8ZP6EW7HPdVQaJKVO 89Rrn3RnB0=

gudrun@vieta[~]>>

Beim nächsten Verbindungsaufbau ist der host_key dann bekannt und Sie werden sofort verbunden.

gudrun@vieta[~]>>ssh tanne

Last login: Mon Feb 21 11:12:00 2000 from vieta

Sun Microsystems Inc. SunOS 5.6 Generic August 1997 No mail.

gudrun@tanne [~] >>

Genaueres zum Verständnis der host_keys finden Sie bei der Erklärung der Funktionsweise von ssh .

Fehlermeldung 3:

gudrun@vieta[~]>>ssh tanne

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

@ WARNING: HOST IDENTIFICATION HAS CHANGED! @

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that the host key has just been changed. Please contact your system administrator. Add correct host key in /vieta/user/gudrun/.ssh/known_hosts to get rid of this message. X11 forwarding is disabled to avoid attacks by corrupted servers.

Are you sure you want to continue connecting (yes/no)? no

gudrun@vieta[~]>>

Bekommen Sie diese Meldung innerhalb des Mathematiknetzes (Start- und Zielrechner unterliegen der Verwaltung der RBG Mathematik), so informieren Sie bitte den Rechnerbetrieb.

Bei anderen Rechnern verfahren Sie wie folgt: Wenn Sie sicher sind, dass es sich nicht um einen evtl. kompromittierten Rechner handelt, löschen Sie den Eintrag, der mit dem Namen des Zielrechners (hier tanne) beginnt, aus der Datei $HOME/.ssh/known_hosts. Beim nächsten Einloggen geht es dann analog der Fehlermeldung 2 weiter.

Genaueres zum Verständnis der host_keys finden Sie bei der Erklärung der Funktionsweise von ssh


ssh und scp ohne Angabe des Passwortes



Wenn Sie bei der Benutzung von ssh oder scp von Rechner A auf Rechner B nicht immer Ihr Passwort eingeben möchten, so müssen Sie Ihren öffentlichen Schlüssel (zu finden in der Datei RechnerA:$HOME/.ssh/identity.pub) in die Datei RechnerB:$HOME/.ssh/authorized_keys (als eine lange Zeile) eintragen.

gudrun@vieta[~]>>cat identity.pub >> authorized_keys

Wenn Sie auf beiden Rechnern auf demselben Dateibaum arbeiten, so muss Ihr öffentlicher Schlüssel $HOME/.ssh/identity.pub in die Datei authorized_keys im selben Verzeichniss ($HOME/.ssh/) eingetragen werden. Generell werden in die Datei $HOME/.ssh/authorized_keys alle öffentlichen Schlüssel der Benutzer eingetragen, die sich ohne weitere Überprüfung des Passwortes einloggen dürfen. Mit der obigen Zeile können Sie einfach beliebig viele öffentliche Schlüssel in die Datei "authorized_keys" einfügen.


Zur Verwaltung der Benutzerschlüssel unter ssh



Innerhalb des Mathematiknetzes werden die ssh-Schlüssel beim Anlegen eines Benutzeraccounts automatisch erzeugt und im UNIX-Verzeichnis unter $HOME/.ssh abgelegt. Sie können sich jederzeit neue oder weitere Schlüssel mit dem Befehl ssh-keygen erzeugen. Sofern Sie die Authentisierung mittels der DSA-Schlüssel vornehmen lassen (siehe auch Einloggen ohne Angabe des Passwortes und Zur Funktionsweise von ssh), gehen Sie das Risiko ein, dass jemand die Schlüssel kopieren und sich damit Ihre Identität verschaffen kann. Achten Sie deshalb unbedingt auf die richtigen Rechte Ihres geheimen Schlüssels - er sollte nur von Ihnen lesbar sein:

gudrun@vieta[~/.ssh]>>pwd /vieta/user/gudrun/.ssh

gudrun@vieta[~/.ssh]>>ll identity

-rw------- 1 gudrun root 527 Feb 4 1998 identity

gudrun@vieta[~/.ssh]>>

Ausserdem bietet ssh die Möglichkeit, die Schlüssel mit einer sogenannten Passphrase zu schützen. Bei der Verwendung von ssh werden Sie in diesem Fall um die Eingabe Ihrer geheimen Passphrase gebeten: Bei den von der Rechnerbetreuung automatisch erzeugten Schlüsseln ist keine Passphrase gesetzt. Wenn Sie eine Passphrase wünschen, so müssen Sie sich mit dem Befehl ssh-keygen zunächst ein neues Schlüsselpaar erzeugen. Details dazu finden Sie im Abschnitt Wie erstelle ich eine public-key Authentisierung mit ssh?. Anschliessend werden Sie nun bei jeder ssh-Verbindung nach Ihrer Passphrase gefragt:

gudrun@kepler[~]>>ssh vieta

Enter passphrase for key '/gauss/user/gudrun/.ssh/id_dsa':

Last login: Mon Aug 18 23:51:22 2003 from macintyre.uni-paderborn.de

gudrun@vieta[~]>>

Die Passphrase lässt sich mit dem Kommando ssh-keygen -t dsa -p ändern:

gudrun@kepler[~]>>ssh-keygen -t dsa -p

Enter file in which the key is (/gauss/user/gudrun/.ssh/id_dsa):

Enter old passphrase:

Key has comment '/gauss/user/gudrun/.ssh/id_dsa'

Enter new passphrase (empty for no passphrase):

Enter same passphrase again:

Your identification has been saved with the new passphrase.

gudrun@kepler[~]>>

ACHTUNG: Haben Sie Ihre Passphrase vergessen, so können die aktuellen Schlüssel nicht mehr benutzt werden; Sie müssen sich also bei Bedarf neue erzeugen.


Wie konvertiere ich Schlüssel von unterschiedlichen SSH-Versionen?

Es gibt verschiedene Implementierungen des ssh-Protokolls. In Mathematik-Netz wird die Open-Source Implementierung OpenSSH eingesetzt. Früher wurde eine kommerzielle Software benutzt. Die mit der alten Version erzeugten Schlüssel funktionieren leider nicht mit OpenSSH, aber sie können die Schlüssel konvertieren.

Erstellen Sie ein Verzeichnis für die Konfiguration, und stellen Sie sicher, daß nur Sie darauf zugreifen dürfen:

gudrun@kepler[~]>>mkdir .ssh

gudrun@kepler[~]>>chmod 700 .ssh

Mit dem Kommando ssh-keygen können sie Schlüssel konvertieren, welche nicht mit einer Passphrase geschützt sind. Ihre alten Schlüssel finden Sie im Verzeichnis ~/.ssh2.

gudrun@kepler[~]>>ssh-keygen -i -f .ssh2/id_dsa_2048_a > .ssh/id_dsa

gudrun@kepler[~]>>ssh-keygen -i -f .ssh2/id_dsa_2048_a.pub > .ssh/id_dsa.pub

Wahlweise können Sie nun Ihren öffentlichen Schlüssel in die authorized_keys aufnehmen:

gudrun@kepler[~]>>cat .ssh/id_dsa.pub > .ssh/authorized_keys




Wo finde ich weitere Informationen?

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

Impressum | Webmaster | Letzte Änderungen am : 27.08.2009