我希望 sshd 能够验证用户的公钥,然后提示输入密码,而不是只输入其中一个。这可能吗?
答案1
目前还没有。但是有一些补丁应该可以添加这个功能。
答案2
这终于可用了从 OpenSSH 6.2 开始(2013 年 3 月发布),使用AuthenticationMethods
配置选项。
例如,您可以添加以下行以sshd_config
要求公钥和密码验证:
AuthenticationMethods publickey,password
登录时,ssh
将scp
首先执行公钥认证,然后提示输入密码:
$ ssh [email protected]
Authenticated with partial success.
[email protected]'s password:
如果你的私钥文件有密码,你当然会首先被提示输入密码。示例使用PuTTY:
Using username "user".
Authenticating with public key "rsa-key-20131221-user"
Passphrase for key "rsa-key-20131221-user":
Further authentication required
[email protected]'s password:
答案3
RHEL/CentOS 6.3 中的 OpenSSH 现在支持此功能,尽管我在 OpenSSH 发行说明中没有找到提及此功能。从RHEL 发行说明:
SSH 现在可以设置为需要多种身份验证方式(而以前 SSH 允许多种身份验证方式,但只需一种身份验证即可成功登录);例如,登录启用 SSH 的计算机需要输入密码和公钥。可以在文件中配置
RequiredAuthentications1
和选项以指定成功登录所需的身份验证。例如:RequiredAuthentications2
/etc/ssh/sshd_config
~]# echo "RequiredAuthentications2 publickey,password" >> /etc/ssh/sshd_config
有关上述
/etc/ssh/sshd_config
选项的更多信息,请参阅sshd_config
手册页。
答案4
这是可行的,但有点笨拙和有限。首先,您只允许公钥身份验证。然后添加/etc/ssh/sshd_config
一个ForceCommand
执行脚本来检查密码。
除非您检查命令是 sftp 并允许其无需密码通过,否则脚本将破坏 SFTP。
我从来没有尝试过这个,所以有人可能会看到更多问题。