cloud-init não insere chaves ssh de nível de instância no gce

2

Estou passando (representação YAML)

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

ao criar uma instância do gcloud. Mas eu não posso ssh para a instância

$ ssh 139.242.197.104.bc.googleusercontent.com
Host key fingerprint is SHA256:aSSOS1tMiF9h43C6UIJQW0TqXuYVMfRic3Lm7gYRECQ
Permission denied (publickey,gssapi-keyex,gssapi-with-mic).

Parece que a chave ssh não está inserida na inicialização. A instância é uma imagem de convidado padrão do RHEL 7.2 kvm convertida do qcow2 para o formato bruto e carregada. Alguma ideia se o que estou fazendo é o encantamento correto para especificar chaves ssh no GCE e se o que eu quero é suportado pelo cloud-init?

    
por akostadinov 20.02.2016 / 00:08

1 resposta

1

Huh, não posso receber nenhuma resposta da GCE, parece. Descobri isso embora. Em primeiro lugar, a versão cloud-init atual do Red Hat Enterprise Linux (v7.2) não suporta instâncias de chaves ssh (trata apenas de chaves de nível de projeto). O cloud-init trunk, porém, já os suporta, portanto, esperamos que o downstream vá acelerar em breve. Nesse meio tempo eu usei o seguinte user-data para emular isso (novamente representação YAML): metadados:

 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"

Observe que a documentação do Google fala apenas sobre startup-script metadata key. Para minha leitura, mesmo upstream cloud-init não se importa com essa chave de metadados. Está procurando pela chave user-data , como mostrado acima.

Espero que isso ajude.

    
por 22.02.2016 / 13:38