Was dieses Modul tut #
SSH ist der Weg in deinen Server: der verschlüsselte Kanal, über den du dich verbindest, um ihn zu administrieren. Sicherzustellen, dass diese Tür richtig eingepasst ist —mit den passenden Schlüsseln und ohne überflüssige Schlösser—, ist das, was einen sicheren Server von einem ungeschützten unterscheidet.
Das Modul ssh vereint die Aufgaben dieses Fernzugriffs in einem einzigen Befehl: es verwaltet die autorisierten Schlüssel des Benutzers (hinzufügen, auflisten, entfernen), steuert die Host-Keys, mit denen sich der Server gegenüber Clients identifiziert, zeigt die aktiven Sitzungen und prüft oder wendet das in deiner Konfiguration definierte sshd-Hardening erneut an. Jede Operation, die sshd berührt, validiert zuerst die Konfiguration (sshd -t), damit eine fehlerhafte Änderung dich nicht aussperren kann.
Halte eine Sitzung offen, während du Schlüssel änderst oder sshd neu startest: so bist du, falls etwas schiefgeht, noch drin, um es zu beheben. Standardmäßig arbeitet das Modul auf dem verwalteten Benutzer ubuntu; nutze --user, um auf einem anderen zu operieren.
Häufige Aufgaben #
Wähle, was du tun möchtest. Jedes Rezept bringt den Befehl schon fertig mit — einfach deinen eigenen Benutzer oder Schlüssel einsetzen und Kopieren drücken.
1
Den Status des SSH-Zugriffs ansehen
Prüfe auf einen Blick, dass sshd aktiv und korrekt konfiguriert ist.
Verbinde dich per SSH als Benutzer ubuntu mit deinem Server und führe aus:
$ sudo imaxe ssh statusBrauchst du es für ein Skript? Füge --json hinzu und du erhältst dieselben Informationen, maschinenlesbar:
$ sudo imaxe ssh status --jsonsshd aktiv ist, auf welchem Port er lauscht und eine Zusammenfassung des angewendeten Hardenings.2
Einen autorisierten Schlüssel hinzufügen oder entfernen
Gewähre einer neuen Maschine Zugriff oder widerrufe einen, den du nicht mehr nutzt.
Sieh dir zuerst an, welche Schlüssel aktuell für den verwalteten Benutzer autorisiert sind:
$ sudo imaxe ssh keys listFüge einen öffentlichen Schlüssel hinzu, indem du ihn als Argument übergibst (oder nutze -, um ihn von der Standardeingabe zu lesen):
$ sudo imaxe ssh keys add "ssh-ed25519 AAAAC3Nz... ana@portatil" --comment "ana@portatil"Brauchst du ihn nicht mehr? Entferne ihn über seinen Fingerprint oder seinen Kommentar:
$ sudo imaxe ssh keys remove "ana@portatil"authorized_keys des Benutzers werden aktualisiert. Prüfe das Ergebnis mit keys list.3
Host-Keys nach dem Klonen neu erzeugen
Unverzichtbar nach dem Erstellen einer Maschine aus einer AMI.
Wenn du ein Image klonst, erbt jede Kopie dieselbe Server-Identität. Erzeuge frische, eindeutige Host-Keys für diese Maschine:
$ sudo imaxe ssh hostkeys regenerate --yes4
Das Hardening prüfen und erneut anwenden
Prüfe, dass sshd weiterhin so konfiguriert ist, wie es sein soll, und korrigiere es andernfalls.
Vergleiche das aktuelle Hardening mit dem gewünschten (dem, das deine Konfiguration definiert):
$ sudo imaxe ssh harden showGibt es Unterschiede? Wende das Hardening aus der YAML erneut an und lade sshd sicher neu:
$ sudo imaxe ssh harden reapplysshd lädt neu, ohne deine Sitzung zu beenden.5
Sitzungen ansehen und sshd neu starten
Sieh, wer verbunden ist, und wende Änderungen an, ohne Angst, dich auszusperren.
Liste die gerade aktiven SSH-Sitzungen auf:
$ sudo imaxe ssh sessionsUm Konfigurationsänderungen anzuwenden, bevorzuge reload (es beendet keine Verbindungen); nutze restart nur, wenn ein vollständiger Neustart nötig ist. Beide validieren zuerst die Konfiguration:
$ sudo imaxe ssh reload
$ sudo imaxe ssh restartBevor du sshd neu startest oder den Port änderst, halte eine zweite Notfallsitzung offen. Wenn du beim erneuten Verbinden nach einem hostkeys regenerate eine Warnung über einen anderen Host-Key erhältst, ist das erwartet: akzeptiere die neue Identität.
Synopsis #
imaxe ssh <subcomando> [<subcomando-anidado>] [argumentos] [flags]Operationen, die sshd, die autorisierten Schlüssel oder die Host-Keys lesen oder ändern, erfordern root-Rechte (nutze sudo). Die Gruppen keys, hostkeys und harden bündeln ihre eigenen verschachtelten Unterbefehle. Füge --json zu status, sessions, keys list oder harden show hinzu, um Ausgabe zu erhalten, die für das Scripting geeignet ist.
Unterbefehle #
| Unterbefehl | Was er tut | Relevante Flags |
|---|---|---|
| status | sshd-Status: aktiv, Port und Hardening-Zusammenfassung. | --json |
| keys list | Listet die autorisierten Schlüssel des verwalteten Benutzers auf. | --user, --json |
| keys add | Fügt einen öffentlichen Schlüssel hinzu (aus Argument oder stdin). | --user, --comment |
| keys remove | Entfernt einen Schlüssel über Fingerprint oder Kommentar. | --user |
| hostkeys regenerate | Erzeugt die Host-Keys neu (kritisch nach dem Klonen einer AMI; ändert den Fingerprint). | --yes |
| sessions | Listet die aktiven SSH-Sitzungen auf. | --json |
| harden show | Zeigt das aktuelle Hardening im Vergleich zum gewünschten. | --json |
| harden reapply | Wendet das Hardening aus der YAML erneut an und lädt sshd neu. | — |
| restart | Startet sshd neu und validiert zuerst die Konfiguration (sshd -t). | — |
| reload | Lädt sshd neu und validiert zuerst die Konfiguration (sshd -t). | — |
Argumente und Flags #
| Argument / Flag | Typ | Standard | Beschreibung |
|---|---|---|---|
| <clave> erf. | string | — | Bei keys add: der öffentliche Schlüssel oder -, um ihn von stdin zu lesen. |
| <selector> erf. | string | — | Bei keys remove: Fingerprint (SHA256:...) oder Kommentar des zu entfernenden Schlüssels. |
| --user | string | ubuntu | Benutzer, dessen authorized_keys abgefragt oder geändert werden (bei keys list/add/remove). |
| --comment | string | — | Bei keys add: mit dem Schlüssel verknüpfter Kommentar, um ihn später zu identifizieren. |
| --yes | bool | false | Bei hostkeys regenerate: bestätigt ohne Rückfrage (ändert den Fingerprint, den Clients sehen). |
| --json | bool | false | Bei status, sessions, keys list und harden show: gibt das Ergebnis als JSON über stdout aus. |
Dateien und Pfade #
| Pfad | Inhalt |
|---|---|
| /etc/imaxe/ssh.yml | Konfiguration des Moduls: Port, Login-Richtlinien (root, Passwort, öffentlicher Schlüssel), erlaubte Benutzer, verwalteter Benutzer und Host-Key-Neuerzeugung. |
| /home/<usuario>/.ssh/authorized_keys | Die autorisierten öffentlichen Schlüssel des verwalteten Benutzers, die keys add/remove ändern. |
| /etc/ssh/sshd_config.d/ | Fragmente der sshd-Konfiguration, in denen das Hardening angewendet wird. |
| /etc/ssh/ssh_host_*_key | Host-Keys, die den Server identifizieren und die hostkeys regenerate erneuert. |
Beispiel für ssh.yml:
port: 22
permit_root_login: "no"
password_authentication: "no"
pubkey_authentication: "yes"
allow_users: []
managed_user: ubuntu
hostkeys:
regenerate_on_first_boot: trueExit-Codes und Logs #
Jede Ausführung liefert einen Code, den du mit echo $? prüfen kannst — nützlich zum Verketten in Skripten:
sshd -t schlug fehl; nichts wurde angewendet.Verfolge das Service-Log live, während du Fehler suchst:
$ sudo journalctl -u ssh -f
$ sudo imaxe ssh harden show --jsonFehlerbehebung #
| Symptom | Wahrscheinliche Ursache | Lösung |
|---|---|---|
| Liefert CONFIG (Code 3) | Das Hardening oder eine manuelle Änderung hat sshd mit einer ungültigen Konfiguration zurückgelassen. | Sieh dir den Diff mit imaxe ssh harden show an und korrigiere ihn; die Validierung verhindert das Anwenden einer kaputten Konfiguration. |
| Beim erneuten Verbinden eine Warnung über einen anderen host key | Die Host-Keys wurden neu erzeugt (erwartet nach dem Klonen einer AMI). | Das ist normal: akzeptiere die neue Identität auf dem Client und aktualisiere deine known_hosts. |
keys add liefert NOTFOUND (Code 4) | Der in --user angegebene Benutzer existiert nicht auf dem System. | Prüfe den Benutzernamen oder nutze den standardmäßig verwalteten (ubuntu). |
| Ich kann mich nicht mehr mit einem Passwort anmelden | password_authentication ist durch das Hardening auf "no" gesetzt. | Das ist beabsichtigt: melde dich mit einem öffentlichen Schlüssel an und verwalte sie mit imaxe ssh keys. |
Steckst du beim Modul SSH fest?
Schreib uns mit der Ausgabe von «imaxe <module> status --json» und wir antworten dir schnell.