ssh

 

Mit dem ssh-Befehl öffnen Sie eine Kommandozeile auf einem entfernten Rechner. Der Name steht für "Secure Shell" und das Programm wurde 1995 geschrieben um das Kommando rsh "Remote Shell" zu ersetzen. Beim rsh-Programm werden Passwörter für den Zugang auf dem entfernten System im Klartext übertragen und können daher mitgelesen werden, wenn man den Netzwerkverkehr überwacht. Das war im wachsenden Internet 1995 nicht mehr sicher genug. Aufgrund seiner Abstammung hat der ssh-Befehl einige Features, die ihn zum rsh-Befehl kompatibel machen.

Für das ssh-Kommando wurde ein neues Protokoll, das SSH-Protokoll entwickelt, das die Daten verschlüsselt überträgt und die Authentifizierung eines Nutzers am entfernten System, also die Anmeldung, auf mehrere unterschiedliche Arten erlaubt. Das ursprüngliche Protokoll wurde später verbessert, mit zusätzlichen Mechanismen versehen, mit denen die Integrität der übertragenen Daten sichergestellt werden kann und als Version 2 veröffentlicht.

Das Programm ssh verwendet einige Konfigurationsdateien und legt ein Unterverzeichnis im Heimatverzeichnis des Benutzers an. Dieses Unterverzeichnis finden Sie unter dem Pfad "~/.ssh". Dort liegen aber nicht alle Dateien. Die systemweite Konfiguration finden Sie unter "/etc/ssh" und, falls die rsh-Kompatibilität nicht aus Sicherheitsgründen in der Konfiguration abgeschaltet wurde, liest ssh auch noch die Dateien "/etc/hosts.equiv", "~/.rhosts".

Das SSH-Protokoll verwendet eine asymmetrische Verschlüsselung mit einem privaten und einem öffentlichen Schlüssel. Für die Sicherheit eines solchen Verfahrens ist es elementar wichtig, dass der private Schlüssel nicht in fremde Hände gerät. Da unter anderem die privaten Schlüssel standardmäßig im Verzeichnis "~/.ssh" landen, sollte dieses nur für den Benutzer selbst zugänglich sein ("chmod 0700 ~/.ssh").

Bei der ersten Verbindung zu einem noch unbekannten System merkt sich der ssh-Befehl den öffentlichen Schlüssel dieses Systems in der Datei "~/.ssh/known_hosts". Bei jeder weiteren Verbindung vergleicht das ssh-Programm zuerst den Schlüssel des entfernten Systems mit der gespeicherten Signatur. Stimmen diese nicht überein, verweigert ssh den Verbindungsaufbau. Dies stellt sicher, dass Sie sich mit dem richtigen System verbinden, erfordert aber manuelles Eingreifen, wenn sich der Schlüssel ändert. Das passiert beispielsweise dann, etwa wenn das entfernte System neu installiert wird, ohne dass die SSH-Schlüssel gesichert und wieder eingespielt werden.

Da der ssh-Befehl den Index eines ungültigen Schlüssel meldet, können Sie dessen Signatur mit dem Kommando "sed -i~ -e XXXd ~/.ssh/known_hosts" entfernen, wobei XXX durch den Index des ungültigen Schlüssels zu ersetzen ist. Vorher sollten Sie natürlich sicher stellen, dass Sie sich tatsächlich mit dem richtigen System verbinden. Dazu können Sie zum Beispiel den Fingerabdruck des gültigen Schlüssels verwenden, da dieser angezeigt wird, wenn der Schlüssel noch nicht bekannt ist. Den Fingerabdruck eines SSH-Schlüssels, beispielsweise "~/.ssh/id_rsa", können Sie sich mit dem Befehl "ssh-keygen -l -f ~/.ssh/id_rsa" ausgeben lassen.

Montag, 26 März 2012 Posted in Linux Befehle FAQ
  • Sie haben Fragen?
    Tel.: 06181 - 502 30 10
    E-Mail: Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein!

K

o

n

t

a

k

t