题 如何使用OpenSSH启用密码和公钥验证


我希望sshd验证用户的公钥,然后提示输入密码,而不是仅提供其中一个。这可能吗?


8
2017-10-20 23:39






答案:


不是现在。但是周围有一些补丁可以添加它。

看到 https://bugzilla.mindrot.org/show_bug.cgi?id=983


2
2017-10-21 01:17





这终于可用了 从OpenSSH 6.2开始 (2013年3月发布),使用 AuthenticationMethods 配置选项。

例如,您可以添加以下行 sshd_config 要求公钥和密码验证:

AuthenticationMethods publickey,password

登录时, ssh 和 scp 将首先执行公钥验证,然后提示输入密码:

$ ssh user@example.org
Authenticated with partial success.
user@example.org's password:

如果您的私钥文件上有密码,当然会首先提示您输入密码。例 使用PuTTY

Using username "user".
Authenticating with public key "rsa-key-20131221-user"
Passphrase for key "rsa-key-20131221-user":
Further authentication required
user@example.org's password:

8
2017-12-21 14:33





这是有可能的,但是以一种有趣的方式。首先,您只允许公钥认证。然后在 /etc/ssh/sshd_config 添加一个 ForceCommand 执行将检查密码的脚本。

除非您检查命令是sftp并允许它通过而没有密码,否则该脚本将破坏SFTP。

我从来没有尝试过,所以有人可能会看到更多的问题。


0
2017-10-21 16:00





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 手册页。


0
2017-07-10 20:37