我有一个程序从上游的CentOS映像创建实例,使用ssh-keys
元数据登录。这是可行的,只要我从上游映像启动,比如centos-cloud/global/images/centos-8-v20210217
metadata: {
"items": [
{
"key": "block-project-ssh-keys",
"value": "true"
},
{
"key": "ssh-keys",
"value": "centos:" + ssh_key + " centos\n"
},
]
},
问题在于关闭此实例、捕获映像以及使用ssh-keys
元数据中的新键启动新实例。这似乎根本不写新的键,而且,我尝试使用浏览器中的SSH (这将创建一个名为我的用户)也不起作用(错误15)。这个特性在我过去从上游映像引导时也起作用了。
我唯一能得到的方法就是用旧钥匙登录。除此之外,实例是正常的。
即使我试图在浏览器中操作键,这个问题仍然存在,并且被https://console.cloud.google.com/所接受。
我尝试过一些方法来纠正这种情况,包括截断/home/centos/.ssh/authorized_keys
文件,删除/home/centos/.ssh
目录,甚至是使用userdel --remove --selinux-user --force centos
的整个用户,理论上说,尝试使用同一个用户两次可能会与某些谷歌软件发生冲突。
我还查看了google_osconfig_agent
服务中的日志: nada。
我是不是漏了个小把戏?至少在Azure上,理论上人们有义务“泛化”一个实例(它提供了一个程序来实现这个目的,它主要是删除用户并在Linux上清除键)。Amazon没有类似的功能,总是运行您选择的任意短shell脚本,这取决于您在其中做任何您想做的事情。
谢谢。
发布于 2021-03-04 05:04:23
这是由使用syslog-ng构建的映像造成的。RPM google-compute-engine
非常依赖于rsyslog
,因此,删除rsyslog同样会破坏一堆东西。
我还没有一个可以继续使用syslog的解决方案,我可能会拆开这个包,看看为什么它需要对rsyslog的硬依赖,以及它是否可以有效地被忽略。
这是在这里存档的:https://github.com/GoogleCloudPlatform/compute-image-packages/issues/897
我在这里添加了一个更彻底的写作:https://github.com/GoogleCloudPlatform/guest-configs/issues/20
https://stackoverflow.com/questions/66464150
复制相似问题