
Estoy buscando configurar automáticamente mis claves SSH en una instalación nueva de Ubuntu Server 20.04 en una Raspberry Pi 4, principalmente como ejercicio de aprendizaje. Estoy intentando usar la ssh_import_id
opción deinicio de nubepara extraer mi clave pública SSH de mi cuenta de GitHub y agregarla ~/.ssh/authorized_keys
para el pi
usuario.
Parece que no puedo hacer que la ssh_import_id
configuración se active. El ~/.ssh
directorio nunca está creado para el pi
usuario y no hay registros relacionados con nada que tenga que ver con extraer una clave de GitHub/ssh_import_id en /var/logs/cloud-init.log
o /var/log/cloud-init-output.log
.
El contenido actual de my user-data
en la raíz de la tarjeta 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
Todo funciona bien si ingreso la clave pública manualmente usando ssh_authorized_keys
, lo que se adaptará a mi flujo de trabajo, pero espero configurar GitHub, ya que es elegante.
Mi comprensión de cloud-init
es definitivamente un poco básica, por lo que es posible que me haya perdido algo. Estoy activando cambios ejecutando cloud-init clean
y luego cloud-init init
, lo que parece que está funcionando bien ya que está rehaciendo usuarios/bits generales/las claves ssh raíz y la huella digital.
Presumiblemente también estoy usando la NoCloud
fuente de datos.
¿Alguien puede ayudarme a descubrir qué estoy haciendo mal?
Respuesta1
¿Es sólo un fragmento de sus datos de usuario? Si no, también necesitarás el #cloud-config
encabezado y users:
. Algo como esto debería funcionar:
#cloud-config
users:
- name: pi
groups: [sudo]
sudo: ALL=(ALL) NOPASSWD:ALL
ssh_import_id:
- gh:torvalds
lock_passwd: true
Acabo de probar y encontré la clave /home/pi/.ssh/authorized_keys
. ¿Estás seguro de que el usuario de github que estás intentando importar tiene claves ubicadas en https://github.com/settings/keys
?
/var/log/cloud-init.log
contiene:
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)
Respuesta2
Según el ssh_import_id
módulo de documentos de Cloud-init solo está disponible para Ubuntu y Debian; sin embargo, dependiendo del tipo y la versión de Ubuntu/Debian, el ssh-import-id
binario que el módulo de Cloud-init ssh_import_id
utiliza detrás de escena para recuperar las claves puede estar instalado o no. en tu distribución.
Por ejemplo,https://cloud.debian.org/images/cloud/bullseye/latest/debian-11-genericcloud-amd64.qcow2no vino con él y, por lo tanto, cloud-init no pudo importar mis claves desde Github. En mi caso vi un command not found
error claro en /var/log/cloud-init-output.log
.
Compruebe si ssh-import-id
el comando estaba presente en su sistema inicializado. Si no estaba allí, es posible que desee intentar agregar este bloque a su user-data
:
packages:
- ssh-import-id
Respuesta3
Intentar:
users:
- name: pi
ssh_authorized_keys:
- ssh-rsa <your key here>
Eso debería poner tu clave en el .ssh/authorized_keys
archivo del pi
usuario.