SSH: Wie finden wir den Benutzerauthentifizierungsmechanismus, der zur Laufzeit in sshd config verwendet wird?

1

Ich möchte die Datei "sshd_config" so ändern, dass ein Skript ausgeführt wird, wenn der Benutzer "ssh" mit dem Kennwort eingeht, und ein anderes Skript, wenn der Benutzer "ssh" mit dem SSH-signierten Zertifikat in den Server eingeht. Ich verstehe, dass dies mit der Kombination von Match und ForceCommand möglich sein könnte, aber ich habe Mühe zu verstehen, wie ich feststellen kann, ob der Benutzer PasswordAuthentication verwendet hat, um einzusteigen, oder SSH Cert, um in den Server einzusteigen.

Zum Beispiel so etwas wie unten:

Übereinstimmung (wenn der Benutzer das Kennwort verwendet hat) ForceCommand / usr / sbin / passwordscript

Übereinstimmung (wenn der Benutzer den Pubkey verwendet hat) ForceCommand / usr / sbin / pubkeyscript

Übereinstimmung (wenn der Benutzer TrustedUserCAKeys (?) Verwendet hat) ForceCommand / usr / sbin / sshcertdscript

Kann ich irgendwie herausfinden, wie der Benutzer versucht, SSH in den Server einzuspielen, unabhängig davon, ob es sich um ein Kennwort, einen öffentlichen Schlüssel oder TrustedUserCAKeys (SSH Cert) handelt?

Danke im Voraus..

Quick Learner
quelle

Antworten:

1

Im authorized_keys Datei können Sie einen Befehl angeben, der bei der Authentifizierung mit einem bestimmten Schlüsselpaar verwendet werden soll. Sie können eine Umgebungsvariable auch mit festlegen environment Möglichkeit:

command="/path/script",command="KEY_WAS_USED=yes" ssh-rsa ...

Anschließend können Sie überprüfen, ob die Variable in einem Startskript vorhanden ist, um Ihr "Nicht-Schlüssel" -Skript (Kennwort) auszuführen.

Martin Prikryl
quelle
Vielen Dank, Martin. Es besteht die Möglichkeit, dass der Benutzer die Umgebungsvariable einrichtet, um die Ausführung eines bestimmten Skripts zu vermeiden. Zum Beispiel: Wenn ich MFA im Kennwortverwendungsfall und nicht im Schlüsselverwendungsfall haben möchte, kann der Benutzer die Umgebungsvariable "setzen", die KEY_WAS_USED = yes ist, und dieser Wert wird möglicherweise auch für den Kennwortverwendungsfall angezeigt. Das könnte möglich sein. Hab ich recht? Nur um neugierig zu sein, gibt es keine Möglichkeit, das in der sshd_config-Datei zur Laufzeit zu wissen?
Quick Learner
Mir ist bewusst, dass dies keine perfekte Lösung ist, aber ich weiß es nicht besser.
Martin Prikryl