
Estou tentando configurar automaticamente minhas chaves SSH em uma nova instalação do Ubuntu Server 20.04 em um Raspberry Pi 4 - principalmente como um exercício de aprendizado. Estou tentando usar a ssh_import_id
opção denuvem-initpara extrair minha chave pública SSH da minha conta GitHub e adicioná-la ~/.ssh/authorized_keys
para o pi
usuário.
Não consigo fazer a ssh_import_id
configuração funcionar. O ~/.ssh
diretório nunca é criado para o pi
usuário e não há registros relacionados a nada relacionado à extração de uma chave de GitHub/ssh_import_id em /var/logs/cloud-init.log
ou /var/log/cloud-init-output.log
.
O conteúdo atual do meu user-data
na raiz do cartão SD:
- name: pi
groups: [sudo]
sudo: ALL=(ALL) NOPASSWD:ALL
ssh_import_id: # import public key from github
- gh:my_cool_github_account
lock_passwd: true # disable password login
Tudo funciona bem se eu inserir a chave pública manualmente usando ssh_authorized_keys
, o que se adequará ao meu fluxo de trabalho, mas espero configurar o GitHub, pois é elegante.
Meu entendimento cloud-init
é definitivamente um pouco básico, então posso ter perdido alguma coisa. Estou acionando alterações executando cloud-init clean
e então cloud-init init
, o que parece estar funcionando bem, pois está refazendo os usuários/bits gerais/as chaves ssh raiz e a impressão digital.
Presumivelmente, também estou usando a NoCloud
fonte de dados.
Alguém pode me ajudar a descobrir o que estou fazendo de errado?
Responder1
Isso é apenas um trecho dos dados do seu usuário? Caso contrário, você também precisará do #cloud-config
cabeçalho e do arquivo users:
. Algo assim deve funcionar:
#cloud-config
users:
- name: pi
groups: [sudo]
sudo: ALL=(ALL) NOPASSWD:ALL
ssh_import_id:
- gh:torvalds
lock_passwd: true
Acabei de testar e encontrei a chave em /home/pi/.ssh/authorized_keys
. Você tem certeza de que o usuário do GitHub que você está tentando importar possui chaves localizadas em https://github.com/settings/keys
?
/var/log/cloud-init.log
contém:
2021-08-09 13:56:24,302 - helpers.py[DEBUG]: Running config-ssh-import-id using lock (<FileLock using file '/var/lib/cloud/instances/me/sem/config_ssh_import_id'>)
2021-08-09 13:56:24,302 - cc_ssh_import_id.py[DEBUG]: Importing SSH ids for user pi.
2021-08-09 13:56:24,302 - subp.py[DEBUG]: Running command ['sudo', '-Hu', 'pi', 'ssh-import-id', 'gh:torvalds'] with allowed return codes [0] (shell=False, capture=False)
Responder2
De acordo com o ssh_import_id
módulo de documentos do cloud-init está disponível apenas para Ubuntu e Debian, no entanto, dependendo do sabor e da versão do Ubuntu/Debian, o ssh-import-id
binário que o módulo do cloud-init ssh_import_id
usa nos bastidores para realmente recuperar as chaves pode ou não ser instalado na sua distro.
Por exemplo,https://cloud.debian.org/images/cloud/bullseye/latest/debian-11-genericcloud-amd64.qcow2não veio com ele e, portanto, o cloud-init falhou ao importar minhas chaves do Github. No meu caso, vi um command not found
erro claro no arquivo /var/log/cloud-init-output.log
.
Verifique se ssh-import-id
o comando estava presente em seu sistema inicializado. Se não estiver lá, você pode tentar adicionar este bloco ao seu user-data
:
packages:
- ssh-import-id
Responder3
Tente:
users:
- name: pi
ssh_authorized_keys:
- ssh-rsa <your key here>
Isso deve colocar sua chave no .ssh/authorized_keys
arquivo do pi
usuário