AWS:如何阻止 cloud-init 禁用 root 登录

AWS:如何阻止 cloud-init 禁用 root 登录

在 AWS 上,我成功地使用经过修改的 Ubuntu 12.04 LTS amd64 创建了一个 AMI。我添加了许多软件包以及我们自己的大量代码和文件。云初始化仍然存在,我相信它应该会保留下来。但是,在我启用用于创建 AMI 快照的原始卷中的 root 权限后,它在运行时重新禁用 root 权限,从而破坏了我的自动化。

文件 /usr/share/pyshared/cloudinit/CloudConfig/cc_ssh.py 似乎与此相关。由于我没有 Python 编码经验,我不知道它调用的一些函数是什么,所以我真的看不出这个脚本到底在做什么。

我可以添加一些我自己的初始化脚本,然后在某处运行,然后撤消该操作并重新启用 root 权限。 是否有一种标准化或由 cloud init 认可的方法来设置一个标志来表明不应禁用 root 登录? 或者我应该只推出自己的解决方案(稍后初始化以放回我自己的 /root/.ssh/authorized_keys 文件)。

我还看到此脚本正在删除旧主机密钥并重新生成新密钥。这是我想要保留的(因此我不需要自己执行此操作)。

我还将 SSH 监听端口号更改为 22 以外的数字(并将安全组设置为仅允许从我自己的 IP 访问该端口)。其余部分没有改变。这很好。

答案1

代码似乎检查disable_root布尔配置值,所以我猜你需要在其中设置它/etc/cloud/cloud.cfg

disable_root: 0

答案2

/etc/cloud/cloud.cfg 中有 2 个与 ssh 相关的设置。一个阻止以 root 身份登录 ssh,另一个阻止使用密码登录 ssh。默认情况下,cloud.cfg 将阻止所有以 root 身份直接登录和所有基于 ssh 密码的身份验证。这些是默认设置:

disable_root: 1
ssh_pwauth:   0

1 表示禁用 root,即禁用 root 登录;0 表示 ssh pwauth,即禁用使用密码进行 ssh 登录。因此,如果您希望能够以 root 身份登录并使用密码,则需要进行以下设置:

disable_root: 0
ssh_pwauth:   1

请记住,将 ssh_pwauth 设置为 1 允许全局进行基于密码的身份验证,而不仅仅是针对 root。

相关内容