许多来源提供了对 SSH 服务器进行基于密钥的身份验证的说明,而不是基于密码的身份验证。
在某些隔离环境中,服务器最好在不需要任何凭据的情况下授权用户,仅需要可识别的用户名。
Linux 下运行的 OpenSSH 支持这种情况吗?如何配置服务器以在不需要凭据的情况下授权用户?
答案1
根据定义,身份验证是证明用户身份的行为。例如,“root”是每个 Linux 系统上的已知用户名。如果服务器向任何以“root”身份出现的用户授予访问权限,则不会进行身份验证;只是身份识别。而且身份本身通常并不是秘密。例如,/etc/passwd
列出所有本地用户名的文件对于所有用户都是可读的。
传统上,身份验证发生在识别步骤之后,并涉及使用一个或多个身份验证因素 - 用户知道的东西(例如密码)、用户拥有的东西(例如 SSH 密钥)或用户正在/所做的事情(例如指纹)。您可以参考维基百科页面以获取更多信息:https://en.wikipedia.org/wiki/身份验证
对于 SSH,您可以做的最接近的近似是使用密码为空或空白的帐户。然后您可以使用AuthenticationMethods none
and PermitEmptyPasswords yes
(在 sshd_config 中),您应该能够使用用户名和空白密码登录。全局设置这些选项是不明智的;最好使用Match
块并将这些设置应用于特定用户或用户组。由于用户名是唯一的防线,因此使用新的非标准用户名也是有意义的。有关选项的更多详细信息,请参阅联机帮助页:sshd_配置(5)
同样,从安全角度来看,这种方法是不安全的,因为您完全取消了身份验证。并且根据无密码用户帐户所允许的权限,您将面临更多的漏洞。仔细查看您的要求并决定是否继续。