Cosa fa questo modulo #
SSH è la porta d'ingresso al tuo server: il canale cifrato attraverso cui ti connetti per amministrarlo. Che quella porta sia messa bene —con le chiavi giuste e senza serrature in più— è ciò che distingue un server sicuro da uno esposto.
Il modulo ssh riunisce in un solo comando le attività di quell'accesso remoto: gestisce le chiavi autorizzate dell'utente (aggiungere, elencare, rimuovere), controlla le host key con cui il server si identifica presso i client, mostra le sessioni attive e verifica o riapplica l'hardening di sshd definito nella tua configurazione. Ogni operazione che tocca sshd convalida prima la configurazione (sshd -t) così che un cambiamento sbagliato non ti lasci fuori.
Tieni aperta una sessione mentre cambi le chiavi o riavvii sshd: così, se qualcosa va storto, resti dentro per correggerlo. Il modulo lavora per impostazione predefinita sull'utente gestito ubuntu; usa --user per operare su un altro.
Attività comuni #
Scegli cosa vuoi fare. Ogni ricetta porta il comando già scritto — cambia solo l'utente o la chiave con i tuoi, e premi Copia.
1
Vedere lo stato dell'accesso SSH
Verifica a colpo d'occhio che sshd sia attivo e ben configurato.
Connettiti via SSH al tuo server con l'utente ubuntu e lancia:
$ sudo imaxe ssh statusTi serve per uno script? Aggiungi --json e otterrai le stesse informazioni leggibili dalla macchina:
$ sudo imaxe ssh status --jsonsshd è attivo, su quale porta ascolta e un riepilogo dell'hardening applicato.2
Aggiungere o rimuovere una chiave autorizzata
Dai accesso a una nuova macchina o revoca una che non usi più.
Per prima cosa guarda quali chiavi sono autorizzate in questo momento per l'utente gestito:
$ sudo imaxe ssh keys listAggiungi una chiave pubblica passandola come argomento (o usa - per leggerla dallo standard input):
$ sudo imaxe ssh keys add "ssh-ed25519 AAAAC3Nz... ana@portatil" --comment "ana@portatil"Non ti serve più? Rimuovila tramite il suo fingerprint o il suo commento:
$ sudo imaxe ssh keys remove "ana@portatil"authorized_keys dell'utente rimane aggiornato. Verifica il risultato con keys list.3
Rigenerare le host key dopo la clonazione
Indispensabile dopo aver creato una macchina a partire da un'AMI.
Quando cloni un'immagine, tutte le copie ereditano la stessa identità di server. Genera delle host key nuove e uniche per questa macchina:
$ sudo imaxe ssh hostkeys regenerate --yes4
Verificare e riapplicare l'hardening
Controlla che sshd resti configurato come deve e correggilo in caso contrario.
Confronta l'hardening attuale con quello desiderato (quello che definisce la tua configurazione):
$ sudo imaxe ssh harden showCi sono differenze? Riapplica l'hardening dal YAML e ricarica sshd in modo sicuro:
$ sudo imaxe ssh harden reapplysshd viene ricaricato senza interrompere la tua sessione.5
Vedere le sessioni e riavviare sshd
Guarda chi è connesso e applica le modifiche senza timore di restare fuori.
Elenca le sessioni SSH attive in questo momento:
$ sudo imaxe ssh sessionsPer applicare modifiche di configurazione, preferisci reload (non interrompe le connessioni); usa restart solo se serve un riavvio completo. Entrambi convalidano prima la configurazione:
$ sudo imaxe ssh reload
$ sudo imaxe ssh restartPrima di riavviare sshd o cambiare porta, tieni aperta una seconda sessione di emergenza. Se alla riconnessione compare un avviso di host key diversa dopo un hostkeys regenerate, è previsto: accetta la nuova identità.
Sinossi #
imaxe ssh <subcomando> [<subcomando-anidado>] [argumentos] [flags]Le operazioni che leggono o modificano sshd, le chiavi autorizzate o le host key richiedono privilegi di root (usa sudo). I gruppi keys, hostkeys e harden raggruppano i propri sottocomandi annidati. Aggiungi --json a status, sessions, keys list o harden show per ottenere un output adatto allo scripting.
Sottocomandi #
| Sottocomando | Cosa fa | Flag rilevanti |
|---|---|---|
| status | Stato di sshd: attivo, porta e riepilogo dell'hardening. | --json |
| keys list | Elenca le chiavi autorizzate dell'utente gestito. | --user, --json |
| keys add | Aggiunge una chiave pubblica (da argomento o stdin). | --user, --comment |
| keys remove | Rimuove una chiave tramite fingerprint o commento. | --user |
| hostkeys regenerate | Rigenera le host key (critico dopo la clonazione di un'AMI; cambia il fingerprint). | --yes |
| sessions | Elenca le sessioni SSH attive. | --json |
| harden show | Mostra l'hardening attuale rispetto a quello desiderato. | --json |
| harden reapply | Riapplica l'hardening dal YAML e ricarica sshd. | — |
| restart | Riavvia sshd convalidando prima la configurazione (sshd -t). | — |
| reload | Ricarica sshd convalidando prima la configurazione (sshd -t). | — |
Argomenti e flag #
| Argomento / Flag | Tipo | Predefinito | Descrizione |
|---|---|---|---|
| <clave> obbl. | string | — | In keys add: la chiave pubblica, o - per leggerla da stdin. |
| <selector> obbl. | string | — | In keys remove: fingerprint (SHA256:...) o commento della chiave da rimuovere. |
| --user | string | ubuntu | Utente il cui authorized_keys viene consultato o modificato (in keys list/add/remove). |
| --comment | string | — | In keys add: commento associato alla chiave per identificarla in seguito. |
| --yes | bool | false | In hostkeys regenerate: conferma senza chiedere (cambia il fingerprint visibile ai client). |
| --json | bool | false | In status, sessions, keys list e harden show: emette il risultato come JSON su stdout. |
File e percorsi #
| Percorso | Contenuto |
|---|---|
| /etc/imaxe/ssh.yml | Configurazione del modulo: porta, politiche di login (root, password, chiave pubblica), utenti consentiti, utente gestito e rigenerazione delle host key. |
| /home/<usuario>/.ssh/authorized_keys | Chiavi pubbliche autorizzate dell'utente gestito che keys add/remove modificano. |
| /etc/ssh/sshd_config.d/ | Frammenti di configurazione di sshd dove viene applicato l'hardening. |
| /etc/ssh/ssh_host_*_key | Host key che identificano il server e che hostkeys regenerate rinnova. |
Esempio di ssh.yml:
port: 22
permit_root_login: "no"
password_authentication: "no"
pubkey_authentication: "yes"
allow_users: []
managed_user: ubuntu
hostkeys:
regenerate_on_first_boot: trueCodici di uscita e log #
Ogni esecuzione restituisce un codice che puoi verificare con echo $? — utile per concatenare negli script:
sshd -t è fallita; non è stato applicato nulla.Segui il log del servizio in tempo reale mentre analizzi:
$ sudo journalctl -u ssh -f
$ sudo imaxe ssh harden show --jsonRisoluzione dei problemi #
| Sintomo | Causa probabile | Soluzione |
|---|---|---|
| Esce CONFIG (codice 3) | L'hardening o una modifica manuale hanno lasciato sshd con una configurazione non valida. | Rivedi il diff con imaxe ssh harden show e correggi; la convalida impedisce di applicare una config non valida. |
| Alla riconnessione, avviso di host key diversa | Le host key sono state rigenerate (previsto dopo la clonazione di un'AMI). | È normale: accetta la nuova identità nel client e aggiorna il tuo known_hosts. |
keys add restituisce NOTFOUND (codice 4) | L'utente indicato in --user non esiste nel sistema. | Controlla il nome utente o usa quello gestito predefinito (ubuntu). |
| Non riesco più a entrare con la password | password_authentication è impostato su "no" per via dell'hardening. | È intenzionale: entra con chiave pubblica e gestiscile con imaxe ssh keys. |
Bloccato con il modulo SSH?
Scrivici allegando l'output di «imaxe <module> status --json» e ti rispondiamo in fretta.