我正在设置一个 ubuntu 服务器,像 99% 的人一样,我做的第一件事就是禁用密码身份验证,转而使用密钥。
在其他发行版和其他时间,这只需编辑/etc/ssh/sshd_conf
并确保......
PasswordAuthentication no
ChallengeResponseAuthentication no
UsePam no
正如您可能已经知道的那样,仅仅这样做不再有效,因为在开始附近,该sshd_conf
文件包含另一个conf文件......
Include /etc/ssh/sshd_config.d/*.conf
包含的文件是一个名为的文件,50-cloud-init.conf
其安装时的唯一内容恰好是...
PasswordAuthentication yes
包含的 Conf 文件会sshd_conf.d
覆盖原始文件sshd_conf
,因此如果只是更改sshd_conf
,50-cloud-init.conf
则会翻转回密码身份验证设置。将其更改为“否”将最终禁用密码登录。
我已经这样做了两次,但每次都忘记了。我现在会记得,但这让我烦恼,因为我无法理解这些东西的基本原理是什么。
到目前为止,通过四处搜寻,我们在“为什么”方面取得了很多成果。大多数人都很乐意克服这个小障碍并继续前进。我很高兴它可以解决,但我有疑问:
这个额外的conf文件的名称表明它与基于云的安装有关。但什么云呢?我把它安装在物理机上。大概是
cloud-init
为我创造了这个,但为什么呢?我没有在云环境中运行。另外,“50”是什么? 50什么?此外,它唯一具有启用密码身份验证的行。在云安装中,不是每个人都总是使用密钥吗?我发现可以只删除非云安装的 cloud-init。这样做有什么注意事项吗?即使在非云安装上,默认情况下也会安装并运行它,这似乎很奇怪。一定有原因吧?