linux-l: Wer hat SSH richtig verstanden...,

Mike Fehla mike.fehla at gmx.de
Di Sep 11 23:57:28 CEST 2001



...und kann es mir erklären?

Hallo!

Ich beschäftige mich gerade mit ssh, und versuche es nicht nur auf
meinen Maschinen selbst zu installieren, sondern auch zu verstehen.
Dazu habe ich sowohl die man-pages, als auch einige Artikel in
verschiedenen Zeitschriften gelesen. Nur richtig kapiert habe ich es
noch nicht.  Ach ja, ich beziehe mich auf OpenSSH der Version 2.5 und
größer.

Was ich schon so mitbekommen habe: Es existierten am Anfang eine Version
SSH 1.x , und danach die Version 2.0. SSH 1.x verwendete ein
patentiertes Kryptoverfahren (RSA), weshalb dann wohl das zweite
Protokoll 2.0 auf DSA basierte. Auf Grund der folgenden
Kommerzialisierung wurde wohl das OpenSSH-Projekt ins Leben gerufen.

OpenSSH unterstützt nun wohl beide SSH-Standards, weshalb wohl die
Schlüssel dafür vorgehalten werden. Und um die Schlüssel geht es mir:

Ich beschreibe nun mal das Prozedere, wie ich glaube, dass es
funktioniert. Man möge mich bitte korrigieren.

Am Anfang erzeugt der Server (auf den man sich remote einlogen will) ein
Schlüsselpaar (öffentlicher und privater Schlüssel) für die asymetrische
Kryptographie. Wenn sich dann der Client an dem bestimmten Port beim
Serveranmeldet, sendet der Server seinen öffentlichen Schlüssel zum
Client. Auf dem Client wird nun ein Schlüssel zur symmetrischen
Kryptographie ( 3DES) erzeugt (Session Key), welcher nun nur mit dem
öffentlichen Schlüssel verschlüsselt wird, um diesen wieder an den
Server zurücksendet. Dieser ist im Besitz des privaten Keys, und kommt
somit exklusiv an den den symmetrischen Schlüssel. Nun können Server und
Client mit einem symmetrischen Kryptoverfahren sicher kommunizieren.
Aber wie sieht das eigentlich mit der Authentifikation aus? Läuft dann
der normale Loginprozess ab, oder ist das dann anders (ich selbst habe
mich schon öfters via ssh remote eingelogt, und mußte mich
authentifizieren).  Nur kann man ja beim Schlüsselerzeugen ein Passwort
angeben, oder es auch sein lassen, welche Bedeutung hat denn dieses
Passwort?

Weiterhin weiß ich, dass nach einer definierten Zeit ein neuer
Session-Key erzeugt wird, der dann wieder über ein asymetrischen
Verfahren übertragen wird. Auch ist mir bekannt, dass der Client schon
über den üffentlichen Schlüssel des betreffenden Servers verfügen kann,
um notfalls einen veränderten öffentlichen Schlüssel zu erkennen
(kleines Sicherheitsfeature). Und auf dem Server selbst kann noch der
entsprechende Client in eine Tabelle (~/.rhosts) stehen, um sich sogar
ohne Passworteingabe sich einzuloggen.

Als ich OpenSSH kompilierte und dann noch ein "make install" ausführte,
wurden schon Schlüssel erzeugt:

[root at hyper /root]# ls -l /etc/ssh

-rw-------    1 root     root        26287 Apr  9 01:10 primes
-rw-r--r--    1 root     root         1122 Apr  9 01:10 ssh_config
-rw-------    1 root     root         1686 Apr  9 01:10 sshd_config
-rw-------    1 root     root          668 May 17 18:49 ssh_host_dsa_key

-rw-r--r--    1 root     root          590 May 17 18:49
ssh_host_dsa_key.pub
-rw-------    1 root     root          515 May 17 18:49 ssh_host_key
-rw-r--r--    1 root     root          319 May 17 18:49 ssh_host_key.pub

-rw-------    1 root     root          887 May 17 18:49 ssh_host_rsa_key

-rw-r--r--    1 root     root          210 May 17 18:49
ssh_host_rsa_key.pub

Ok, hier sind Schlüsselpaare, einmal der DSA-Key, einmal der RSA-Key und
ein Host-Key. RSA und DSA sind mir klar, hier geht es um die
Kompatibilität zu SSH1 und SSH2. Aber was ist den mit dem Host-Key??

Mir scheint, dass im /etc -Verzeichnis die globalen Keys abgelegt sind,
nun kann ja auch jeder User sein eigendes Schlüsselpaar erzeugen und ins
~/.ssh Verzeichnis speichern. Sogar die Config-Files können lokal ins
Home-Verzeichnis abgelegt werden.  Sind dann also die Schlüssel im /etc-
Verzeichnis dann unbedingt notwendig? Und gilt dann nicht auch der
umgekehrte Fall, dass sshd nur mit den globalen Einstellungen (wieder
meine ich das /etc-Verzeichnis) betreibt, so dass sich alle User
trotzdem am Server sich anmelden können??

So das war jetzt eine Menge Input, aber ich hoffe, dass Ihr mir dennoch
auf die Sprünge helfen könnt.

Im übrigen hats auch noch nicht geklappt, mich auf meinen Server via ssh
einzuloggen, ein  "Permission denied
(publickey,password,keyboard-interactive)" erscheint dann nach dem
3.Versuch der Passworteingabe.

Trotzdem bedanke ich mich schon im Voraus, für Eure Meinungen,
und sage noch gleichzeitig sorry für die vielleicht wirre Beschreibung
meiner Gedanken...

Gruß Mike






Mehr Informationen über die Mailingliste linux-l