SSH OTP
Aggiungi codici monouso basati sul tempo all'accesso SSH utilizzando Linux PAM e il modulo PAM di Google Authenticator.
Prima di eseguire
Questo esempio di Ubuntu installa un modulo PAM aggiuntivo e modifica l'autenticazione del server. Mantieni aperta una sessione amministrativa esistente e una console indipendente o un accesso di ripristino. Configurare e testare ciascun account prima dell'applicazione; conservare in modo sicuro i codici segreti e di emergenza OTP e non pubblicarli mai. Sincronizza l'orologio del server. Verifica che il tuo client SSH supporti le istruzioni interattive da tastiera e che gli account di automazione e ripristino rimangano utilizzabili. Lo stack PAM di esempio mantiene l'autenticazione comune, che potrebbe richiedere la password di sistema e l'OTP: la chiave pubblica più la tastiera interattiva non garantisce di per sé esattamente due prompt o esattamente due fattori. I file PAM, le policy e i nomi dei servizi variano in base alla distribuzione; non applicare questo esempio senza modifiche ai server macOS o Windows.
Dopo aver applicato le modifiche, verifica in una nuova sessione SSH che l’accesso e il funzionamento previsto siano corretti. Mantieni aperta la sessione attuale fino alla verifica, così da poter ripristinare la configurazione se necessario.
App di autenticazione
Usa un’app TOTP sul telefono per scansionare il codice QR di registrazione o inserire manualmente il segreto. Proteggi il codice QR e il segreto e conserva i codici di recupero in un luogo sicuro. L’app è separata dal modulo PAM del server.
- 2FAS Consigliato
- Google Authenticator
- Microsoft Authenticator
2FAS offre backup facoltativi; la sincronizzazione tra dispositivi è una funzione Premium. La disponibilità dipende dalla piattaforma e dal piano.
Esempi
Installa il modulo PAM su Ubuntu. Il modulo è separato da OpenSSH e richiede privilegi di amministratore.
sudo apt update
sudo apt install libpam-google-authenticatorEsegui lo strumento di registrazione per ogni account che utilizzerà OTP. Segui le istruzioni interattive, aggiungi l'account a un'app di autenticazione e archivia in modo sicuro i codici di emergenza. Non condividere o registrare il segreto visualizzato.
google-authenticatorNel file del servizio SSH PAM esistente (in genere /etc/pam.d/sshd), aggiungi il modulo come regola di autenticazione preservando tutti gli account, le sessioni e le altre regole esistenti. Questo frammento mantiene l'autenticazione comune; la policy PAM potrebbe anche richiedere una password di sistema. Non aggiungere nullok quando è richiesto OTP.
Apri il file con nano:
sudo nano /etc/pam.d/sshd@include common-auth
auth required pam_google_authenticator.soUnisci queste impostazioni nella configurazione effettiva del server SSH. Ciò richiede una chiave pubblica e un'autenticazione interattiva da tastiera PAM; L'ordine di inclusione o i blocchi di corrispondenza esistenti possono modificare il risultato. Non sovrascrivere l'intera configurazione.
Apri il file con nano:
sudo nano /etc/ssh/sshd_configUsePAM yes
PubkeyAuthentication yes
KbdInteractiveAuthentication yes
PasswordAuthentication no
AuthenticationMethods publickey,keyboard-interactive:pamConvalidare la sintassi e verificare la policy effettiva prima di applicare la procedura di ricarica del servizio SSH del sistema. Utilizza sshd -T -C con l'utente e l'indirizzo pertinenti quando si applicano le regole di corrispondenza. Da una sessione separata, verificare la chiave e tutti i fattori richiesti prima di chiudere la sessione originale.
sudo sshd -t && sudo sshd -T && sudo systemctl reload sshOpzionale: chiave pubblica e OTP
Per richiedere una chiave e poi un OTP senza la password dell’account, modifica le regole auth PAM di SSH. Rimuovere common-auth dal servizio PAM SSH riguarda tutti i suoi account e può aggirare altre politiche. Verifica le altre regole auth con l’amministratore; conserva le regole account e session, una sessione aperta e un accesso di recupero indipendente.
Questo frammento Ubuntu illustra le regole auth e non è un file PAM completo. Commenta common-auth solo dopo averne verificato gli effetti. Non aggiungere nullok. Altre regole auth possono richiedere ulteriori fattori.
Apri il file con nano:
sudo nano /etc/pam.d/sshd# /etc/pam.d/sshd: auth fragment only
# @include common-auth
auth required pam_google_authenticator.soDopo aver integrato la configurazione SSH precedente, controlla i valori effettivi. I nomi visualizzati sono in minuscolo. L’ordine di Include e i blocchi Match possono alterare il risultato; per Match usa sshd -T -C con i dati della connessione.
sudo sshd -T | grep -E '^(usepam|pubkeyauthentication|kbdinteractiveauthentication|passwordauthentication|authenticationmethods) 'Verifica e ricarica come indicato sopra. Da una seconda sessione client, accedi con l’account registrato e la chiave privata, quindi inserisci il codice. Verifica che l’accesso fallisca senza la chiave o il codice richiesti prima di chiudere la sessione originale.
ssh -i ~/.ssh/id_ed25519 alice@server.example.comSecure Pipes supporta le richieste SSH keyboard-interactive per inserire il codice richiesto dal server. Questo OTP è distinto da quello per sbloccare l’app. Il segreto OTP condiviso è sul server e nell’app di autenticazione; Secure Pipes non deve memorizzarlo per questo accesso.
Riferimenti ufficiali
Verificato il 27 ottobre 2026