
Ich möchte meine SSH-Schlüssel automatisch auf einer neuen Ubuntu Server 20.04-Installation auf einem Raspberry Pi 4 einrichten - hauptsächlich als Lernübung. Ich versuche, die ssh_import_id
Option zu nutzen,Cloud-Init~/.ssh/authorized_keys
um meinen öffentlichen SSH-Schlüssel von meinem GitHub-Konto abzurufen und ihn dem Benutzer hinzuzufügen pi
.
Ich kriege es einfach nicht hin, die ssh_import_id
Konfiguration zu aktivieren. Das ~/.ssh
Verzeichnis wird nie für den Benutzer erstellt pi
und es gibt keine Protokolle, die mit dem Abrufen eines Schlüssels von GitHub/ssh_import_id in /var/logs/cloud-init.log
oder zu tun haben /var/log/cloud-init-output.log
.
Der aktuelle Inhalt meines user-data
Stammverzeichnisses der SD-Karte:
- 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
Alles funktioniert einwandfrei, wenn ich den öffentlichen Schlüssel manuell eingebe ssh_authorized_keys
, was zu meinem Arbeitsablauf passt, aber ich hoffe, dass ich das GitHub-Ding so schick einrichten kann.
Mein Verständnis von cloud-init
ist definitiv ein wenig grundlegend, daher habe ich möglicherweise etwas übersehen. Ich löse Änderungen aus, indem ich cloud-init clean
und dann ausführe cloud-init init
, was sich anfühlt, als würde es einwandfrei laufen, da es Benutzer/allgemeine Teile/die Root-SSH-Schlüssel und den Fingerabdruck neu erstellt.
Ich verwende vermutlich auch die NoCloud
Datenquelle.
Kann mir jemand helfen herauszufinden, was ich falsch mache?
Antwort1
Ist das nur ein Ausschnitt deiner Benutzerdaten? Wenn nicht, brauchst du auch den #cloud-config
Header und users:
. So etwas sollte funktionieren:
#cloud-config
users:
- name: pi
groups: [sudo]
sudo: ALL=(ALL) NOPASSWD:ALL
ssh_import_id:
- gh:torvalds
lock_passwd: true
Ich habe es gerade getestet und den Schlüssel in gefunden /home/pi/.ssh/authorized_keys
. Sind Sie sicher, dass der GitHub-Benutzer, den Sie importieren möchten, Schlüssel unter hat https://github.com/settings/keys
?
/var/log/cloud-init.log
enthält:
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)
Antwort2
Gemäß der Dokumentation von Cloud-Init ssh_import_id
ist das Modul nur für Ubuntu und Debian verfügbar. Je nach Variante und Version von Ubuntu/Debian ist die ssh-import-id
Binärdatei, die das Modul von Cloud-Init ssh_import_id
im Hintergrund verwendet, um die Schlüssel tatsächlich abzurufen, jedoch möglicherweise nicht auf Ihrer Distribution installiert.
Zum Beispiel,https://cloud.debian.org/images/cloud/bullseye/latest/debian-11-genericcloud-amd64.qcow2war nicht dabei und daher konnte cloud-init meine Schlüssel nicht von Github importieren. In meinem Fall sah ich einen eindeutigen command not found
Fehler in /var/log/cloud-init-output.log
.
Überprüfen Sie, ob ssh-import-id
der Befehl in Ihrem initialisierten System vorhanden war. Wenn nicht, können Sie versuchen, diesen Block zu Ihrem hinzuzufügen user-data
:
packages:
- ssh-import-id
Antwort3
Versuchen zu:
users:
- name: pi
ssh_authorized_keys:
- ssh-rsa <your key here>
Das sollte Ihren Schlüssel in die .ssh/authorized_keys
Datei des pi
Benutzers setzen