Bei einer SSH-Verbindung mit Schlüsselauthentifizierung sendet der Benutzer die ID des öffentlichen Schlüssels, den er verwenden möchte. Anschließend sucht der Server in der Datei authorized_keys nach dem öffentlichen Schlüssel.
Ich möchte, dass der Server nicht in der Datei „authorized_keys“ nach dieser ID sucht, sondern den Benutzernamen verwendet, um den Schlüssel aus einer anderen Quelle abzurufen (z. B. einer Datenbank, einer anderen Datei, einem Remote-Server usw.).
Ist das möglich?
Antwort1
Um es zu ändernDateipfadkönnen Sie denAutorisierteSchlüsseldateiOption in sshd_config (vorausgesetzt, der Server führt OpenSSH aus). Sie können mehrere Pfade angeben, entweder relativ zum Home-Verzeichnis des Benutzers oder absolute Pfade mit %u
Erweiterung zum Benutzernamen.
Um beispielsweise den Standardspeicherort authorized_keys beizubehalten undhinzufügeneine Datei in /etc:
AuthorizedKeysFile .ssh/authorized_keys /etc/ssh/users/%u.txt
Um einenexterner Befehl, wenn der Server OpenSSH 6.2 oder höher verwendet, können Sie angebenAutorisierterSchlüsselbefehlin der sshd_config-Datei des Servers, die auf ein benutzerdefiniertes Programm oder Skript verweist.
Das Programm wird bei jeder Anmeldung ausgeführt, erhält einen Benutzernamen als Befehlszeilenparameter und muss über stdout eine Liste der Schlüssel für diesen Benutzer ausgeben (im selben Format wie authorized_keys).
Wenn Sie beispielsweise LDAP verwenden,SSSDDer LDAP-Client enthält bereits ein Tool sss_ssh_authorizedkeys
zum Abrufen von Schlüsseln aus dem sshPublicKey-Attribut des Benutzers.
AuthorizedKeysCommand /usr/bin/sss_ssh_authorizedkeys
AuthorizedKeysCommandUser nobody