Ich habe etwas über das Einrichten von ssh-Schlüsseln unter Linux gelesen und habe einige Fragen. Korrigiere mich, wenn ich falsch liege ...
Nehmen wir an, Host tr-lgto möchte mit ssh eine Verbindung zu Host tr-mdm herstellen. Wenn wir sicher sein wollen, dass es sich um das echte tr-mdm handelt, generieren wir ein Schlüsselpaar auf tr-mdm und fügen den öffentlichen Schlüssel known_hosts
auf tr-lgto hinzu. Wenn tr-mdm überprüfen möchte, ob es sich um das echte tr-lgto handelt, muss tr-lgto ein Schlüsselpaar generieren und den öffentlichen Schlüssel zu authorized_keys
tr-mdm hinzufügen.
Frage 1 : In der Datei known_hosts gibt es kein Benutzerfeld , nur IP-Adressen und Hostnamen. tr-mdm hat möglicherweise viele Benutzer, die jeweils einen eigenen .ssh
Ordner haben. Sollten wir den öffentlichen Schlüssel zu jeder der known_hosts
Dateien hinzufügen ?
Frage 2 : Ich habe festgestellt, dass ssh-keyscan -t rsa tr-mdm
der öffentliche Schlüssel von tr-mdm zurückgegeben wird. Woher weiß ich, welchem Benutzer dieser Schlüssel gehört? Darüber hinaus unterscheidet sich der öffentliche Schlüssel /root/.ssh/
von dem, was dieser Befehl zurückgibt. Wie kann das sein?
quelle
Antworten:
Sie verwechseln die Authentifizierung des Servercomputers mit dem Clientcomputer und die Authentifizierung des Benutzers mit dem Servercomputer.
Serverauthentifizierung
Eines der ersten Dinge, die beim Aufbau der SSH-Verbindung passieren, ist, dass der Server seinen öffentlichen Schlüssel an den Client sendet und dem Client (dank Public-Key-Kryptografie ) nachweist, dass er den zugehörigen privaten Schlüssel kennt. Dies authentifiziert den Server: Wenn dieser Teil des Protokolls erfolgreich ist, weiß der Client, dass der Server so ist, wie er es vorgibt.
Der Client überprüft möglicherweise, ob es sich um einen bekannten Server handelt, und nicht um einen Schurken-Server, der versucht, sich als der richtige auszugeben. SSH bietet nur einen einfachen Mechanismus zur Überprüfung der Legitimität des Servers: Es merkt sich die Server, mit denen Sie bereits verbunden sind, in der
~/.ssh/known_hosts
Datei auf dem Client-Computer (es gibt auch eine systemweite Datei/etc/ssh/known_hosts
). Wenn Sie zum ersten Mal eine Verbindung zu einem Server herstellen, müssen Sie auf andere Weise überprüfen, ob der vom Server angegebene öffentliche Schlüssel wirklich der öffentliche Schlüssel des Servers ist, zu dem Sie eine Verbindung herstellen möchten. Wenn Sie den öffentlichen Schlüssel des Servers haben, zu dem Sie eine Verbindung herstellen möchten, können Sie ihn~/.ssh/known_hosts
manuell auf dem Client hinzufügen .Die Authentifizierung des Servers muss erfolgen, bevor Sie vertrauliche Daten an den Server senden. Insbesondere wenn die Benutzerauthentifizierung ein Kennwort enthält, darf das Kennwort nicht an einen nicht authentifizierten Server gesendet werden.
Benutzerauthentifizierung
Der Server lässt einen Remote-Benutzer nur dann anmelden, wenn dieser Benutzer nachweisen kann, dass er das Recht hat, auf dieses Konto zuzugreifen. Abhängig von der Serverkonfiguration und der Auswahl des Benutzers kann der Benutzer eine von mehreren Arten von Anmeldeinformationen vorlegen (die folgende Liste erhebt keinen Anspruch auf Vollständigkeit).
~/.ssh/authorized_keys
auf dem Server) enthalten ist.quelle
Meine Freunde gaben mir die Antwort. Standardmäßig identifiziert der Schlüssel einen Computer und keinen Benutzer. Die Schlüssel werden also in / etc / ssh / gespeichert. Aus diesem Grund habe ich einen anderen Schlüssel als den in /root/.ssh gespeicherten erhalten
quelle