首页
/ 解决cloud-init中SSH密码认证无法禁用的问题

解决cloud-init中SSH密码认证无法禁用的问题

2025-06-25 12:24:00作者:苗圣禹Peter

问题背景

在Ubuntu 24.04.1 LTS系统中,用户发现无法通过修改/etc/ssh/sshd_config文件来禁用SSH密码认证。经过排查,发现存在一个名为50-cloud-init.conf的配置文件,该文件会覆盖主配置文件中的PasswordAuthentication设置。

技术分析

cloud-init是云环境中广泛使用的初始化工具,它会在系统启动时自动配置各种服务。在默认情况下,cloud-init并不会主动创建50-cloud-init.conf文件。该文件的出现通常意味着:

  1. 系统安装程序(installer)主动要求cloud-init创建此配置
  2. 存在自定义的用户数据(user-data)配置
  3. 云平台或安装程序有特定的初始化需求

解决方案

针对这一问题,有以下几种解决方法:

方法一:创建优先级更高的配置文件

在/etc/ssh/sshd_config.d/目录下创建一个数字前缀更小的配置文件(如10-my-config.conf),内容为:

PasswordAuthentication no

由于配置文件按数字顺序加载,数字小的文件会覆盖数字大的文件中的相同配置项。

方法二:直接修改主配置文件

编辑/etc/ssh/sshd_config文件,确保包含:

PasswordAuthentication no

并在文件末尾添加:

Include /etc/ssh/sshd_config.d/*.conf

方法三:通过cloud-init配置

创建或编辑/etc/cloud/cloud.cfg.d/目录下的配置文件,添加:

ssh_pwauth: false

注意事项

  1. 修改配置前建议备份原始文件
  2. 确保至少有一种认证方式可用,以免被锁在系统外
  3. 修改后需要重启SSH服务使更改生效
  4. 在生产环境中,建议先在测试环境验证配置变更

总结

通过理解cloud-init的工作原理和SSH配置文件的加载顺序,我们可以有效地解决密码认证无法禁用的问题。选择哪种解决方案取决于具体的环境需求和管理偏好。对于大多数用户而言,创建优先级更高的配置文件是最简单可靠的解决方案。

登录后查看全文
热门项目推荐
相关项目推荐