在这一页,给出的解释是:
PasswordAuthentication 选项指定我们是否应使用基于密码的身份验证。为了实现强大的安全性,必须始终将此选项设置为 yes。
但它没有提供任何用例场景来阐明何时适合回答“是”或“否”。有人可以进一步详细说明吗?
答案1
您的链接指向的是过时 10 年的文档。
SSH 支持多种方式来验证用户身份,最常见的方式是要求输入登录名和密码,但您也可以使用登录名和公钥来验证用户身份。如果您将 PasswordAuthentication 设置为 no,您将不再能够使用登录名和密码进行身份验证,而必须使用登录名和公钥(如果公钥认证设置为是)
答案2
请注意,PasswordAuthentication 设置不控制所有基于密码的身份验证。ChallengeResponseAuthentication 通常也要求输入密码。
PasswordAuthentication 控制对 RFC-4252(第 8 节)中定义的“密码”身份验证方案的支持。ChallengeResponseAuthentication 控制对 RFC-4256 中定义的“键盘交互”身份验证方案的支持。理论上,“键盘交互”身份验证方案可以向用户询问任意数量的多方面问题。实际上,它通常只询问用户的密码。
如果您想要完全禁用基于密码的身份验证,请将 PasswordAuthentication 和 ChallengeResponseAuthentication 都设置为“no”。如果您是谨慎行事,请考虑将 UsePAM 也设置为“no”。
基于公钥/私钥的身份验证(由 PubkeyAuthentication 设置启用)是一种单独的身份验证类型,当然不涉及将用户密码发送到服务器。
有些人认为使用 ChallengeResponseAuthentication 比 PasswordAuthentication 更安全,因为它更难实现自动化。因此,他们建议禁用 PasswordAuthentication,同时启用 ChallengeResponseAuthentication。此配置还鼓励(但不一定阻止)使用公钥身份验证进行任何自动系统登录。但是,由于 SSH 是基于网络的协议,只要质询始终且仅包括要求用户输入密码,服务器就无法保证对 ChallengeResponseAuthentication(又称“键盘交互”)的响应实际上是由坐在键盘前的用户提供的。
答案3
PasswordAuthentication 是最简单的实现,因为无需执行任何操作。相反,您需要通过加密连接将密码发送到服务器。如果服务器被攻破,则可能会出现安全问题,因为密码可能会被窃取。
使用公钥,您的密码不会传输到服务器,它更安全,但需要更多设置。
答案4
您可以在使用时将其设置为否键或强制使用它们。