Wie funktioniert die SSH-Authentifizierung?

Wie funktioniert die SSH-Authentifizierung?

Meine Frage basiert auf diesem Szenario: serverA, serverB, user1, und user2. Beide Benutzer sind auf beiden Servern vorhanden.

user1am serverAwerden SSH-Schlüsselpaare generiert und der öffentliche Schlüssel in die authorized_keysDatei am kopiert serverB.

user2auf serverAhat keine SSH-Schlüsselpaare generiert und auch auf serverB.

user1meldet sich an serverA. user1versucht, per SSH serverBals user2( ssh user2@serverb) eine Verbindung herzustellen, und es funktioniert einwandfrei, es wird kein Kennwort abgefragt.

Meine Frage ist folgende. Wie funktioniert das? user2hat keine öffentlichen Schlüssel auf serverB. Ich dachte immer, dass SSH den Benutzer authentifiziert, der versucht, sich anzumelden. Bedeutet das, dass SSH auf serverBden aktuell angemeldeten Benutzer user1auf authentifiziert serverA?

Antwort1

Das klingt überhaupt nicht richtig. Verwenden Sie OpenSSH? Oder eine andere SSH-Implementierung?

Um auf Ihre Frage zurückzukommen, wie es funktioniert. Es ist wie erwartet (vereinfacht):

  • Mit Remote-System verbinden.
  • Benutzernamen weitergeben.
  • Das Remote-System überprüft die Existenz des Benutzers und fordert den Schlüssel an, wenn die Schlüsselauthentifizierung konfiguriert ist.
  • Überprüft, ob der Benutzer HOME/.ssh/authorized_keys vorhanden ist
  • Überprüft nacheinander die Einträge in „authorized_keys“, bis einer funktioniert oder keiner mehr übrig ist.
  • Wenn ein passender Schlüssel gefunden wird, ist die Authentifizierung erfolgreich.

Es basiert alles auf den Schlüsseln in der Zielbenutzerdatei ~.ssh/authorized_keys. Wenn es keine solche Datei/keinen solchen Schlüssel gibt, ist etwas sehr kaputt.

Antwort2

In Kommentaren haben Sie erwähnt .rht_authorised key:

Die standardmäßige, pro Benutzer autorisierte Schlüsseldatei sollte sich ~/.ssh/authorized_keysdort befinden, wo ~auf das Home-Verzeichnis des Benutzers verwiesen wird. Wenn .rht_authorisedüberhaupt verwendet wird, bedeutet dies, dass eine nicht standardmäßige OpenSSH-Konfiguration verwendet wird.

/etc/ssh/sshd_configkönnen (mit dem AuthorizedKeysFileSchlüsselwort) einen anderen Speicherort (oder mehrere Speicherorte) für die autorisierte Schlüsseldatei definieren: Wenn sie als absoluter Pfad definiert ist und keine Token wie %hoder %uin %Uder Definition verwendet werden, verwenden alle Benutzer dieselbe autorisierte Schlüsseldatei.

In neueren OpenSSH-Versionen gibt es auch ein AuthorizedKeysCommandSchlüsselwort, das ein Programm oder Skript definiert, das zum Nachschlagen öffentlicher Schlüssel bei der Authentifizierung eines Benutzers verwendet wird. Es wird nicht standardmäßig verwendet, kann aber in einigen Hosting- oder Cloud-Setups verwendet werden.

Was wird grep -i authorizedkeys /etc/ssh/sshd_configgemeldet?

verwandte Informationen