Sì, ho una configurazione in cui posso accedere ssh
al mio server utilizzando l'autenticazione con chiave pubblica, con un fallback all'autenticazione a due fattori con Google Authenticator + password quando la mia chiave privata non è disponibile. Questi sono i passaggi che è possibile utilizzare per configurarlo.
Installazione di Google Authenticator
Il mio server esegue Ubuntu Bionic Beaver (18.04.1). Puoi installare Google Authenticator utilizzando apt
:
$ sudo apt install libpam-google-authenticator
Configurazione di sshd
Apri /etc/pam.d/sshd
e aggiungi la seguente riga in alto:
auth optional pam_google_authenticator.so
Apri /etc/ssh/sshd_config
e cambia una riga. La linea esistente è
ChallengeResponseAuthentication no
e dovresti cambiarlo in
ChallengeResponseAuthentication yes
Configurazione di Google Authenticator per il tuo account
Il prossimo passo è attivare Google Authenticator per il tuo account. Puoi farlo semplicemente eseguendo:
$ google-authenticator
Assicurati di eseguirlo come l'utente che effettuerà connessioni ssh, non root. Prendi nota della tua nuova chiave segreta e dei tuoi codici di emergenza. La procedura guidata ti farà diverse domande per configurare le impostazioni di sicurezza per il tuo account.
Configurazione della tua app mobile
Uso l'app Google Authenticator per iPhone. Questa app ha un pulsante [+] che mi consente di aggiungere un nuovo token basato sul tempo usando la chiave segreta che ho ottenuto dal google-authenticator
comando sul mio server. È stato banale da installare. Non posso aiutarti con le app su qualsiasi altra piattaforma, ma immagino che il processo sia altrettanto semplice.
Tirando il grilletto
L'ultima cosa che devi fare è riavviare sshd
.
$ sudo /etc/init.d/ssh restart
A questo punto, quando si tenta di connettersi al server quando è disponibile la chiave privata, l'autenticazione funziona. Quando la chiave privata non è disponibile, verrà richiesto un codice di verifica, quindi la password dell'account.
Bingo, autenticazione a due fattori.