sshd(openssh)に失敗した鍵ベースのログイン試行の公開鍵を記録させることはできますか?

sshd(openssh)に失敗した鍵ベースのログイン試行の公開鍵を記録させることはできますか?

私が理解したように、sshd(私の場合はopenssh)は通常、鍵で認証を試みる着信接続の公開鍵の指紋/ハッシュを記録できます。

私が探しているのは、着信接続、特に失敗したログインの完全な公開鍵です。それは可能ですか?

それでは、どうすればいいですか?

ベストアンサー1

明らかに、これはopensshの現在の機能ではありません。

私自身のためにここで見つけることができる関数を書いた。

https://github.com/catskul/openssh-portable/tree/print-public-key

diff --git a/auth2-pubkey.c b/auth2-pubkey.c
index 2fb5950..82cce57 100644
--- a/auth2-pubkey.c
+++ b/auth2-pubkey.c
@@ -122,6 +122,17 @@ userauth_pubkey(struct ssh *ssh)
                    "(received %d, expected %d)", __func__, key->type, pktype);
                goto done;
        }
+       if (log_level_get() >= SYSLOG_LEVEL_DEBUG1) {
+               if ((b = sshbuf_new()) == NULL)
+                       fatal("%s: sshbuf_new failed", __func__);
+               if ((r = sshkey_format_text(key, b)) != 0)
+                       fatal("%s: sshkey_format_text failed: %s", __func__,
+                               ssh_err(r));
+               debug("%s: public key of %s: %s", __func__, authctxt->user,
+                       sshbuf_ptr(b));
+               sshbuf_free(b);
+               b = NULL;
+       }
        if (sshkey_type_plain(key->type) == KEY_RSA &&
            (ssh->compat & SSH_BUG_RSASIGMD5) != 0) {
                logit("Refusing RSA key because client uses unsafe "

おすすめ記事