Назад | Перейти на главную страницу

cloud-init не вставляет ssh-ключи уровня экземпляра в gce

Я прохожу (представление YAML)

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

при создании экземпляра 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 не вставлен при загрузке. Экземпляр представляет собой стандартный гостевой образ RHEL 7.2 kvm, преобразованный из qcow2 в необработанный формат и загруженный. Есть идеи, правильное ли то, что я делаю, для указания ключей ssh ​​в GCE, и поддерживается ли то, что я хочу, cloud-init?

Ха, похоже, не могу получить никакого ответа от GCE. Хотя разобрался. Во-первых, текущая версия Cloud-init Red Hat Enterprise Linux (v7.2) не поддерживает ключи 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 ключ, как показано выше.

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