/etc/ssh/sshd_config.d/50-cloud-init.conf
这个文件 不是所有机器都有,它主要出现在一些基于云的 Linux 镜像(尤其是 AWS EC2、Azure、GCP 等)上,并且 通常是新版的云镜像才会有

具体情况:

  1. 传统 Linux 或自己安装的服务器

    • /etc/ssh/sshd_config.d/ 目录可能根本不存在。
    • SSH 配置完全由 /etc/ssh/sshd_config 控制。
  2. 云厂商的预配置镜像(AMI/Cloud-Init 支持)

    • 新版 AMI 通常会有 /etc/ssh/sshd_config.d/50-cloud-init.conf
    • 这是 cloud-init 自动生成的配置片段,用于强制密码登录关闭(PasswordAuthentication no)、禁止 root 登录等安全策略。
    • 这样做的目的是 提升安全性,防止默认 AMI 密码被滥用。
  3. Cloud-init 的机制

    • cloud-init 在实例首次启动时,会根据元数据生成配置文件片段。
    • /etc/ssh/sshd_config.d/ 下的文件会被 sshd 自动 include,优先级通常高于主配置文件。

✅ 结论:

  • 新旧差异:老机器、手动安装的 Linux 可能没有 /etc/ssh/sshd_config.d/50-cloud-init.conf;新版云镜像才可能有。
  • 管理方式:如果有这个文件,你需要修改它或覆盖它,才能改变 SSH 的默认行为。

排查方法

# 查看所有配置文件中 passwordauthentication 的定义
grep -Ri passwordauthentication /etc/ssh/sshd_config*

然后确认:

没有重复定义

修改后重启 sshd

如果是 AWS,确认 cloud-init 或 AMI 安全策略没有覆盖

Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐