/etc/ssh/sshd_config.d/50-cloud-init.conf
这个文件 不是所有机器都有 ,它主要出现在一些基于云的 Linux 镜像(尤其是 AWS EC2、Azure、GCP 等)上,并且 通常是新版的云镜像才会有。
具体情况:
-
传统 Linux 或自己安装的服务器
/etc/ssh/sshd_config.d/目录可能根本不存在。- SSH 配置完全由
/etc/ssh/sshd_config控制。
-
云厂商的预配置镜像(AMI/Cloud-Init 支持)
- 新版 AMI 通常会有
/etc/ssh/sshd_config.d/50-cloud-init.conf。 - 这是 cloud-init 自动生成的配置片段,用于强制密码登录关闭(PasswordAuthentication no)、禁止 root 登录等安全策略。
- 这样做的目的是 提升安全性,防止默认 AMI 密码被滥用。
- 新版 AMI 通常会有
-
Cloud-init 的机制
- cloud-init 在实例首次启动时,会根据元数据生成配置文件片段。
/etc/ssh/sshd_config.d/下的文件会被sshd自动 include,优先级通常高于主配置文件。
✅ 结论:
- 新旧差异 :老机器、手动安装的 Linux 可能没有
/etc/ssh/sshd_config.d/50-cloud-init.conf;新版云镜像才可能有。 - 管理方式:如果有这个文件,你需要修改它或覆盖它,才能改变 SSH 的默认行为。
排查方法
sql
# 查看所有配置文件中 passwordauthentication 的定义
grep -Ri passwordauthentication /etc/ssh/sshd_config*
然后确认:
没有重复定义
修改后重启 sshd
如果是 AWS,确认 cloud-init 或 AMI 安全策略没有覆盖