Я прохожу (представление 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
ключ, как показано выше.
Надеюсь это поможет.