我正在通过(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密钥。
希望这可以帮助。