Telnet, FTP & Co. übertragen alle Daten im Klartext: Sind Sie per Telnet auf einem anderen Unix-Rechner eingeloggt und geben dort ein Passwort ein, dann wird dieses zwar eventuell nicht angezeigt (viele Programme schützen Passwortdialoge etwa durch Anzeigen von Sternchen), mit einem Packet-Sniffer lässt sich ein solches Passwort aber problemlos auslesen. Ebenso können per FTP übertragene Daten von Neugierigen kopiert werden. Ausreichende Gründe, auf die Verwendung der Secure Shell, ssh, umzusteigen.
Nicht nur Shell-Sitzungen können mit ssh verschlüsselt werden, sondern auch X11-Verbindungen. Dabei kann direkt die Umgebungsvariable $DISPLAY richtig gesetzt werden – Sie können auf diese Weise Anwendungen auf einem anderen Computer starten. Bevor es ins Detail geht: Gegenwärtig existieren zwei unterschiedliche und inkompatible Versionen des SSH-Protokolls: SSH 1.x und SSH 2.x. Da SSH 1.x (und damit zusammenhängend OpenSSH) mit hoher Wahrscheinlichkeit auf Ihrem Linux-System zum Einsatz kommt, ist in diesem Artikel SSH 1.x gemeint, wenn von ssh die Rede ist.
Clients und Daemons
Zu SSH gehören auf der Client-Seite ssh/slogin als funktionaler Ersatz von telnet, rlogin oder rsh sowie scp zum Kopieren von Dateien (ersetzt ftp und rcp). Der Server ist der sshd (SSH-Daemon). Darüber hinaus gibt es Administrationswerkzeuge wie z. B. ssh-keygen (zum Erzeugen von RSA-Schlüsseln), ssh-agent (zur Verwaltung der RSA-Keys, Automatisierung und Vereinfachung des Logins), ssh-add (Registrierung neuer Schlüssel beim SSH-Agent) und make-ssh-known-hosts (Erstellung einer Liste mit bekannten öffentlichen Host-Keys einer Domain). ssh muss sowohl auf Ihrem eigenen Rechner wie auch auf der Gegenseite installiert sein; genauer: um eine Verbindung von A nach B aufzubauen, muss auf Rechner A die Client-Software und auf B der Daemon installiert sowie letzterer auch aktiviert sein.
Um sich auf einem anderen Rechner einzuloggen, tippen Sie
ssh [Userid@]RemoteHost
wobei die Userid@ nur angegeben werden muss, wenn der Benutzername auf dem anderen System von dem Ihres eigenen Rechners abweicht. Hinter den Kulissen baut der der Client eine TCP/IP-Verbindung zum Server auf (Default-Port: 22). Nach Austausch der Protokollversion wird während der Verbindung auf ein paketbasiertes Binär-Protokoll umgeschaltet.
Alternativ zu Userid@RemoteHost können Sie auch den Aufruf
ssh -l Userid RemoteHost
verwenden. Diese Aufrufform ist an die Syntax des (unsicheren) rlogin angelehnt. Möchten Sie sich nicht auf dem anderen Computer anmelden, sondern nur einen Befehl ausführen, können Sie diesen direkt in den Aufruf mit hineinnehmen. Vorsicht bei Wildcards: Wenn Sie diese verwenden, sollte der Befehl in Anführungszeichen eingeschlossen werden, da sonst die Shell des eigenen Rechners eingreift:
huhn@asteroid:~$ ssh plutarch.cologne.de "ls -l xani*" huhn@plutarch.cologne.de's password: -rwxr-xr-x 1 huhn users 630396 Nov 14 2000 xanim.cine
Mit dem Aufruf
ssh -t [Userid@]RemoteHost mutt
wird in einem "Pseudo-Terminal" der Mail-Client mutt gestartet. Die Ausgabe auf diesem Terminal wird verschlüsselt übertragen und entschlüsselt im eigenen Terminalfenster angezeigt. Der Parameter -t wird für Programme benötigt, die die Bildschirmsteuerung selbst übernehmen; ein einfacher Aufruf der Form ssh RemoteHost mutt würde fehlschlagen.
… weitere Parameter
Sichere Dateitransporte
Das zweite große Anwendungsgebiet von ssh neben dem geschützten Login ist der Datei-Transfer: Hier ersetzt das Tool scp (secure copy) die ungeschützten Dienste ftp (file transfer protocol) und rcp (remote copy).
Eine Datei per scp zu kopieren, ist fast so einfach wie das normale, lokale Kopieren mit cp; ein Beispiel-Aufruf sieht etwa so aus:
scp /tmp/archiv.tgz UserId@RemoteHost:/tmp/
Stimmen die User-Namen überein, kann auch hier wieder UserId weggelassen werden, es bleibt also scp datei RemoteHost:Verzeichnis. Über die Option "-r" (für rekursiv) lassen sich auch ganze Verzeichnisse kopieren; auch die von cp bekannte Option "-p" (preserve; Rechte und Besitzer/Gruppe erhalten) kann hier verwendet werden. Das ergibt natürlich nur Sinn, wenn User- und Group-IDs auf beiden Systemen identisch sind.



