OpenSSH – 如何要求PublicKeyAuthentication *和*login/密码authentication

我有一个互联网面临的服务器,我需要允许共享(非pipe理)访问。 只有在用户密钥在authorized_keys文件中时,我才允许访问,但是我不相信其中的一些人不会让他们的密钥被盗,而且我知道其中一些人没有用密码保护他们的私钥,尽pipe我要求他们。

基本上,我想要的是让sshd同时需要ChallengeResponseAuthentication PubKeyAuthentication,以便他们总是必须input密码以及具有授权的密钥对。

我读过的所有东西都让我觉得这不是什么开放的sshd会让我这样做的:我告诉它什么auth方法是可以的,它会以特定的(内置的)顺序来尝试它们,直到其中一个工作,然后用户被允许进入。

我将不得不寻找一个不同的sshd或自己下载并破解代码,或者我错过了什么?

您可以在authorized_keys文件中configuration强制命令。 这可以做一个sudo或su或一些shell脚本,反过来调用某种types的login密码要求。

每个用户可能有两个帐户。 一个用于基于SSH密钥的访问,然后调用强制命令,要求他们在获得实际shell之前input密码。

“使用我们稍后介绍的其他选项来禁用不必要的SSHfunction,在SSH1下,可以禁止无端口转发的端口转发,无代理转发的代理转发和使用no-pty的tty分配。

http://oreilly.com/catalog/sshtdg/chapter/ch08.html

你应该介绍2因素authentication,而不是SSH密钥+挑战密码。

凭借强大的双因素身份validationfunction,您可以知道您的密码(密码)以及您拥有的信息(OTP-每次都会更改)。 这样,有人知道用户的密码将仍然无法login到服务器,因为他不知道当前的OTP。

有基于SMS,基于应用程序(即谷歌authentication)和基于硬件令牌的OTP解决scheme。 总是使用TOTP而不是HOTP。

2因子比ssh-private keys + challenge password更安全,总是相同的 😉