Meine Frage basiert auf diesem Szenario: serverA
, serverB
, user1
, und user2
. Beide Benutzer sind auf beiden Servern vorhanden.
user1
am serverA
werden SSH-Schlüsselpaare generiert und der öffentliche Schlüssel in die authorized_keys
Datei am kopiert serverB
.
user2
auf serverA
hat keine SSH-Schlüsselpaare generiert und auch auf serverB
.
user1
meldet sich an serverA
. user1
versucht, per SSH serverB
als user2
( ssh user2@serverb
) eine Verbindung herzustellen, und es funktioniert einwandfrei, es wird kein Kennwort abgefragt.
Meine Frage ist folgende. Wie funktioniert das? user2
hat keine öffentlichen Schlüssel auf serverB
. Ich dachte immer, dass SSH den Benutzer authentifiziert, der versucht, sich anzumelden. Bedeutet das, dass SSH auf serverB
den aktuell angemeldeten Benutzer user1
auf 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_keys
dort 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_config
können (mit dem AuthorizedKeysFile
Schlü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 %h
oder %u
in %U
der Definition verwendet werden, verwenden alle Benutzer dieselbe autorisierte Schlüsseldatei.
In neueren OpenSSH-Versionen gibt es auch ein AuthorizedKeysCommand
Schlü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_config
gemeldet?