为什么不能使用ssh密钥login失败?

我在RHEL 6操作系统上运行。 我可以在我的/var/log/secure文件中看到失败的login尝试(密码失败)。 但是,当密钥不正确时,我看不到SSH服务器的尝试。 例如,如果我发出ssh请求:

  ssh -o BatchMode=yes -i ./id_rsa [email protected] 

它回来了:

  Permission denied (publickey,password,keyboard-interactive). 

但是,这个故障似乎没有logging在/var/log/secure 。 有任何想法吗? 我甚至在sshd_config文件中设置了LogLevel VERBOSE

您可以在SSH代理中拥有多个密钥。 所有这些密钥将被testingssh连接,即使只有一个被允许。 由于这个原因ssh客户端不认为失败的密钥作为身份validation问题。 只有当所有authentication方法失败时,才会返回失败。

公共密钥authentication如何在openssh中工作?

为了完全清楚发生了什么,公钥validation分两步进行。 一个只是提供信息,另一个检查整个密钥对。

第一步

只是检查提供的公钥是否与服务器authorized_keys文件中的一些可用密钥相匹配,并且在默认日志级别没有logging为错误,因为许多人只是将其密钥存储在代理或某处并提供给所有服务器。 这通常回到密码authentication。 如果你设置了VERBOSE日志级别,你也应该在/var/log/secure看到这个消息(至less在最近的rhel6 openssh包中)。

第二步

validation拥有私人部分,它做真正的不对称密码学,如果这一个失败,它应该被logging,因为它更像是失败的authentication尝试。

蛮力是可行的吗?

不logging的公钥authentication尝试也是这样想的,这基本上不能作为任何暴力攻击的目标,因为状态空间与密码相比太大(例如1024b密钥),你可以在那里尝试所有8个字符的密码(大约64b或熵最大,但通常less得多,因为你可以使用许多启发式 – 词汇,只有字母,等等)。 在钥匙你只有一个大号。

RHEL上有日志!

在RHEL / CentOS / Fedora上,您可以使用audit ,其中也包含这些失败的身份validation尝试。 您可以在/var/log/audit/audit.log中以res=failed身份findUSER_AUTH事件

我希望它能帮助你一点。