我有一个互联网面临的服务器,我需要允许共享(非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分配。
你应该介绍2因素authentication,而不是SSH密钥+挑战密码。
凭借强大的双因素身份validationfunction,您可以知道您的密码(密码)以及您拥有的信息(OTP-每次都会更改)。 这样,有人知道用户的密码将仍然无法login到服务器,因为他不知道当前的OTP。
有基于SMS,基于应用程序(即谷歌authentication)和基于硬件令牌的OTP解决scheme。 总是使用TOTP而不是HOTP。
2因子比ssh-private keys + challenge password更安全,总是相同的 😉