it-swarm.com.de

SSH-Schlüssel-basierte Authentifizierung: Bekannte_Hosts gegen autorisierte_Schlüssel

Ich habe über das Einrichten von SSH-Schlüsseln unter Linux gelesen und habe einige Fragen. Korrigiere mich, wenn ich falsch liege ...

Angenommen, 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 zu 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 Auf tr-mdm hinzufügen.

Frage 1: In der Datei unknown_hosts gibt es kein Benutzerfeld , nur IP-Adressen und Hostnamen. tr-mdm hat möglicherweise viele Benutzer, von denen jeder seinen eigenen Ordner .ssh hat. 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 Den öffentlichen Schlüssel von tr-mdm zurückgibt. Woher weiß ich, zu welchem ​​Benutzer dieser Schlüssel gehört? Darüber hinaus unterscheidet sich der öffentliche Schlüssel in /root/.ssh/ Von dem, was dieser Befehl zurückgibt. Wie kann das sein?

21
damluar

Sie verwechseln die Authentifizierung des Servercomputers mit dem Clientcomputer und die Authentifizierung des Benutzers mit dem Servercomputer.

Serverauthentifizierung

Eines der ersten Dinge, die passieren, wenn die SSH-Verbindung hergestellt wird, ist, dass der Server seinen öffentlichen Schlüssel an den Client sendet und dem Client (dank Kryptographie mit öffentlichem Schlüssel ) beweist, dass er den kennt zugehöriger privater Schlüssel. Dadurch wird der Server authentifiziert: Wenn dieser Teil des Protokolls erfolgreich ist, weiß der Client, dass der Server der ist, für den er sich ausgibt.

Der Client überprüft möglicherweise, ob es sich bei dem Server um einen bekannten Server handelt, und nicht um einen nicht autorisierten Server, der versucht, sich als der richtige auszugeben. SSH bietet nur einen einfachen Mechanismus zum Überprüfen der Legitimität des Servers: Es merkt sich Server, mit denen Sie bereits verbunden sind, im ~/.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 präsentierte öffentliche Schlüssel tatsächlich 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 zu ~/.ssh/known_hosts auf dem Client manuell.

Die Authentifizierung des Servers muss erfolgen, bevor Sie vertrauliche Daten an ihn senden. Insbesondere wenn die Benutzerauthentifizierung ein Kennwort umfasst, darf das Kennwort nicht an einen nicht authentifizierten Server gesendet werden.

Benutzerauthentifizierung

Der Server lässt einen Remotebenutzer nur dann anmelden, wenn dieser Benutzer nachweisen kann, dass er das Recht hat, auf dieses Konto zuzugreifen. Abhängig von der Serverkonfiguration und der Wahl des Benutzers kann der Benutzer eine von mehreren Arten von Anmeldeinformationen vorlegen (die folgende Liste ist nicht vollständig).

  • Der Benutzer kann das Kennwort für das Konto angeben, bei dem er sich anmelden möchte. Der Server überprüft dann, ob das Kennwort korrekt ist.
  • Der Benutzer kann einen öffentlichen Schlüssel präsentieren und nachweisen, dass er den diesem öffentlichen Schlüssel zugeordneten privaten Schlüssel besitzt. Dies ist genau die gleiche Methode, die zur Authentifizierung des Servers verwendet wird, aber jetzt versucht der Benutzer, seine Identität zu beweisen, und der Server überprüft sie. Der Anmeldeversuch wird akzeptiert, wenn der Benutzer nachweist, dass er den privaten Schlüssel kennt und der öffentliche Schlüssel in der Autorisierungsliste des Kontos enthalten ist (~/.ssh/authorized_keys auf dem Server).
  • Eine andere Art von Methode besteht darin, einen Teil der Authentifizierungsarbeit des Benutzers an den Clientcomputer zu delegieren. Dies geschieht in kontrollierten Umgebungen wie Unternehmen, in denen viele Computer dieselben Konten verwenden. Der Server authentifiziert den Clientcomputer nach demselben Mechanismus, der umgekehrt verwendet wird, und verlässt sich dann auf den Client, um den Benutzer zu authentifizieren.

Meine Freunde gaben mir die Antwort. Standardmäßig identifiziert der Schlüssel eine Maschine und keinen Benutzer. Die Schlüssel werden also in/etc/ssh/gespeichert. Deshalb habe ich einen anderen Schlüssel als den in /root/.ssh gespeicherten

2
damluar