cloud-init does not insert instance level ssh keys in gce

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?

3
задан 22 February 2016 в 14:39
1 ответ

Ха, похоже, не могу получить никакого ответа от 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 не заботится об этом ключе метаданных. Он ищет ключ пользовательских данных , как показано выше.

Надеюсь, это поможет.

1
ответ дан 3 December 2019 в 07:25

Теги

Похожие вопросы