我想尝试核心操作系统为新的 vServer。到目前为止,我很喜欢它,但犯了一个致命的错误:我通过cloudinit文件,而不是较新的点火方法,现在每次更新重启都会重置我的密码和 ssh 设置...
我懒得创建一个“完美”的 cloudinit 文件,所以我认为我可以随后更改所有设置,就像我之前每次安装操作系统一样……
因此,每次更新时间窗口之后,我都必须再次更改密码,并且需要重新启动 sshd 服务,因为端口再次设置为 22,即使配置仍然定义我更改的端口号。
我找不到任何建议来更改 cloudinit 文件,甚至在重启时禁用重置。我看到了仅执行一次的 ignition 文件的优势,但我想避免重新安装整个 vServer,而只通过 ignition 文件重新安装 CoreOS。
有什么想法或提示吗?:)
提前致谢
答案1
Michael 为我指明了正确的方向 - 谢谢!我不知道是否可以为系统提供新的云配置,我想我必须在系统的任何位置更改一些配置...
另一个问题似乎是 CoreOS 使用的 cloud-init 与 cloud-init 文档中显示的略有不同,因此您可能会找到一些不适用于 CoreOS 的不同解决方案。
问题 1:重启将 ssh 端口重置为 22
我发现文档中的此页面我发现我正确地编辑了 sshd_config,但是系统在重启后使用了 sshd.socket,所以我不得不一直(重新)启动 sshd……
解决方案:禁用 sshd.socket 激活
sudo systemctl mask --now sshd.socket
sudo systemctl enable sshd.service # VERY IMPORTANT!
sudo systemctl restart sshd.service
很重要:你可以把自己锁在系统之外!你可能想检查你是否可以通过提供商控制面板访问登录 shell(救了我)。文档说你必须执行上面的命令 1 和 3,但sshd 服务已禁用重启后,你必须启用它重启之前!
另外,您可能希望继续使用 sshd.socket 并在那里更改端口。上面的链接中也有记录。
问题 2:每次重启后都要重置密码
解决方案:创建新的cloud-init.yaml
我可以创建一个更好的 cloud-init.yaml 并且重新申请只需更改密码并为现有用户添加我的 ssh 密钥,然后调用
sudo coreos-cloudinit --validate --from-file=/path/to/cloud-init.yaml
检查文件。删除--validate
标志将应用 cloud-init.yaml 并更改密码(适合测试),但重启仍会重置它!我发现,该coreos-cloudinit
命令不适合任何用户手动运行。要更新重新启动时重新配置的配置,我们必须覆盖另一个文件:
sudo cp /path/to/cloud-init.yaml /var/lib/coreos-install/user_data
重启后我的密码就正确了。