我已经配置了使用密钥登录 ssh,并且工作正常。问题是,当我使用密钥和包含的密码连接到服务器时,但当我输入错误的密码时,我没有看到任何失败的登录尝试。使用 key in 没有失败的登录尝试:
/var/log/audit/audit.log
或者
/var/log/secure
换句话说,我可以输入密码直至死亡,无需任何操作。您是否有任何想法如何使用密钥和密码记录失败的 ssh 登录尝试?
操作系统是:Red Hat Enterprise Linux Server 版本 7.3 (Maipo)
先感谢您。
这是我多次输入错误密码时来自服务器的日志:
Connection from my_ip port 51115 on server_ip port 22
sshd[3639]: Found matching RSA key: 00:12:23 ...
sshd[3639]: Postponed publickey for some_user from ip_address port 51115 ssh2 [preauth]
答案1
听起来您已将客户端密钥配置为在连接到服务器之前需要密码才能打开密钥。它不会被您的服务器记录,因为这发生在客户端计算机上。
答案2
基本上,保护 SSH 密钥的密码完全是客户端的问题。考虑一下甚至ssh-keygen
允许您在不连接到任何服务器的情况下更改密码(ssh-keygen -p -f id_rsa
)。当然,这需要知道旧的密码,但是您可以(尝试)猜测它,而无需暗示服务器您正在这样做。
也就是说,当连接到服务器时,SSH 客户端会向服务器提供其拥有的任何密钥前要求输入密码来解密密钥。您会注意到,如果您连接到不接受您的密钥的主机,则永远不会询问密码。
$ ssh -v -v somehost
...
debug1: Offering RSA public key: /...
debug2: we sent a publickey packet, wait for reply
debug1: Server accepts key: pkalg ssh-rsa blen 407
debug2: input_userauth_pk_ok: fp blah
debug1: key_load_private_type: incorrect passphrase supplied to decrypt private key
Enter passphrase for key '/...':
从技术上讲,您可以修改服务器以检测提供密钥但不使用密钥进行身份验证的客户端。但这无济于事,因为任何攻击者都可以在尝试进行身份验证之前先尝试解密密钥。同样,即使使用常用的实用程序也是可能的:这就是您在运行时所做的事情ssh-agent
。
如果密钥对您来说不够,当前版本的 OpenSSH 允许服务器同时需要密钥和一个密码。这文档以此为例,首先需要密钥,然后需要密码(使用“密码”或“键盘交互”身份验证):
AuthenticationMethods publickey,password publickey,keyboard-interactive