I am passing (YAML representation)
metadata:
items:
- key: sshKeys
value: root:ssh-rsa AAAAB... non@nan
when creating a gcloud instance. But I cannot ssh to the instance
$ ssh 139.242.197.104.bc.googleusercontent.com
Host key fingerprint is SHA256:aSSOS1tMiF9h43C6UIJQW0TqXuYVMfRic3Lm7gYRECQ
Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
Looks like ssh key is not inserted on boot. Instance is standard RHEL 7.2 kvm guest image converted from qcow2 to raw format and uploaded. Any idea if what I'm doing is the correct incantation for specifying ssh keys in GCE and if what I want is supported by cloud-init?
Ха, похоже, не могу получить никакого ответа от GCE. Хотя разобрался. Во-первых, текущая версия Cloud-init Red Hat Enterprise Linux (v7.2) не поддерживает ключи ssh экземпляра (она обрабатывает только ключи уровня проекта). Транк cloud-init
уже поддерживает их, поэтому мы надеемся, что нисходящий поток скоро появится. Тем временем я использовал следующие пользовательские данные
, чтобы эмулировать это (снова представление 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
не заботится об этом ключе метаданных. Он ищет ключ пользовательских данных
, как показано выше.
Надеюсь, это поможет.