cloud-init不会在gce中插入实例级别的ssh密钥

我正在通过(YAML表示)

metadata: items: - key: sshKeys value: root:ssh-rsa AAAAB... non@nan 

当创build一个gcloud实例。 但我不能ssh到实例

 $ ssh 139.242.197.104.bc.googleusercontent.com Host key fingerprint is SHA256:aSSOS1tMiF9h43C6UIJQW0TqXuYVMfRic3Lm7gYRECQ Permission denied (publickey,gssapi-keyex,gssapi-with-mic). 

看起来像ssh键没有插入启动。 实例是从qcow2转换为原始格式并上传的标准RHEL 7.2 kvm访客映像。 任何想法,如果我在做什么是正确的咒语指定在GCE ssh密钥,如果我想要的是云-init支持?

呃,看来不能得到任何GCE的答案。 想通了。 首先当前的红帽企业Linux(v7.2)cloud-init版本不支持实例ssh密钥(它只处理项目级密钥)。 cloud-init主干虽然确实支持他们,所以希望下游将很快起来。 在此期间,我用下面的user-data来模拟这个(再次YAML表示):元数据:

  items: - key: sshKeys value: root:ssh-rsa AAAAB... non@nan - key: user-data value:| #cloud-config disable_root: false preserve_hostname: true runcmd: - "curl 'http://metadata.google.internal/computeMetadata/v1/instance/attributes/sshKeys' -H 'Metadata-Flavor: Google' | sed -r -e 's/(^|,)[^\\S]*:/\\1/g' -e 's/,/\\n/g' >> /root/.ssh/authorized_keys" 

请注意,Google文档仅涉及startup-script元数据密钥。 就我的阅读而言,即使是上游的cloud-init也不关心那个元数据密钥。 它正在寻找如上所示的user-data密钥。

希望这可以帮助。