Hai già configurato il tuo server Linux per consentire l'accesso tramite chiave SSH? Bene! Ora puoi fare un altro balzo in avanti enorme e innalzare drasticamente il livello di sicurezza disabilitando completamente l'accesso SSH tramite password: così facendo, chiunque non possieda una chiave SSH riconosciuta verrà immediatamente bloccato. L'operazione è efficace quanto semplicissima: basta modificare il file di configurazione e riavviare il servizio

Trattazione ampliata e semplificata nel 2021

[guida] Come disattivare login SSH password Ubuntu Server (Linux) - ssh disable password

Il risultato finale è esattamente quello mostrato nella grafica qui sopra. Dopo aver svolto la procedura descritta di seguito, l'unico modo per eseguire login al server Linux sarà tramite chiave asimmetrica (la cosiddetta "chiave SSH"). Chi non possieda il file-chiave autorizzato, non riceverà più l'invito a digitare la password nel terminale, come invece avviene di consueto. Al contrario: il server mostrerà l'errore Permission denied (public key), poi chiuderà bruscamente la connessione. Il potenziale aggressore non potrà fare altro.

Ho testato la procedura sia con Ubuntu Server, sia con CentOS, ma dovrebbe essere identica con qualsiasi altra distribuzione.

Il server così configurato rimane compatibile con qualsiasi client: potremo dunque continuare a connetterci via SSH sia da PC Windows, sia da Linux, Mac, Android eccetera... a patto di possedere una chiave SSH autorizzata, s'intende!

Svolgere questa operazione è vivamente raccomandato, e dovrebbe divenire un'abitudine per chiunque gestisca un qualsiasi tipo di server Linux.

Disattivare il login SSH con password, Passo "zero": Generare le chiavi, testare il login

Prima di svolgere l'operazione descritta di seguito, è imperativo aver generato la nostra chiave SSH ed aver correttamente configurato il server per accettarla. Abbiamo visto come procedere nell'approfondimento dedicato:

» Leggi: [guida] Come creare una chiave SSH da PC Windows, Linux, Mac e accedere ai server senza password

[guida] Come disattivare login SSH password Ubuntu Server (Linux) - autenticazione chiave ssh windows linux mac

Raccomando inoltre di verificare con la massima attenzione che il login SSH con chiave stia effettivamente funzionando. Il segnale principale che ce lo rivela è proprio il fatto che non viene chiesta la password al momento della connessione.

Disattivare il login SSH con password, Passo 1: Aprire il file di configurazione

La configurazione si svolge, ovviamente, sul server. Colleghiamoci dunque in SSH al server e apriamo il file che contiene le opzioni:

sudo nano /etc/ssh/sshd_config

Attenzione a non confonderlo con il file ssh_config! Quello di nostro interesse è sshd_config, con una d dopo la parola ssh.

In caso dovessimo ricevere un errore "comando non trovato", installiamo l'editor Nano come descritto qui:

» Leggi: Guida: modificare i file di configurazione di Linux Ubuntu/CentOS da terminale è facile con "nano" (alternativa a "vi")

[guida] Come disattivare login SSH password Ubuntu Server (Linux) - vi nano terminale spotlight

Disattivare il login SSH con password, Passo 2: PasswordAuthentication

Premere la combinazione da tastiera Ctrl+W per aprire la ricerca. Nel campo proposto, digitare PasswordAuthentication e battere Invio.

L'editor troverà così la direttiva omonima. Ora basta modificare tale opzione di modo che si legga

PasswordAuthentication no

[guida] Come disattivare login SSH password Ubuntu Server (Linux) - vi sshd_config PasswordAuthentication no

Una volta effettuata la modifica, premere nuovamente Ctrl+W e cercare di nuovo la stessa opzione: può capitare, infatti, che sia presente presente più volte. Ogni volta che la incontriamo, vogliamo assicurarci che sia impostata allo stesso modo:

PasswordAuthentication no

Se così non è, modifichiamola ora.

Disattivare il login SSH con password, Passo 3: ChallengeResponseAuthentication

C'è una seconda opzione che potrebbe consentire l'accesso SSH tramite password. Si chiama ChallengeResponseAuthentication. Premiamo dunque di nuovo Ctrl+W all'interno del file per cercare questa stringa e assicurarci che sia impostata così:

ChallengeResponseAuthentication no

[guida] Come disattivare login SSH password Ubuntu Server (Linux)

Ripetere la ricerca per assicurarsi che non vi siano altre occorrenze.

C'è da dire che, su Ubuntu Server, questa opzione è già correttamente valorizzata a no. Ma, stando a questo documento di RedHat, il valore di default dovrebbe essere yes. È dunque opportuno verificare esplicitamente quale valore sia impostato, e modificarlo se non è corretto.

Disattivare il login SSH con password, Passo 4: Salvare, chiudere, riavviare SSH

Concludiamo la modifica e usciamo dall'editor di testo premendo, in sequenza, Ctrl+X, Y, Invio.

Ora riavviamo il servizio per rendere effettive le modifiche:

sudo service ssh restart

Disattivare il login SSH con password, Passo 5: Testare il servizio

È tutto pronto! Per assicurarci che la nuova configurazione funzioni come ci aspettiamo, proviamo a collegarci da un client qualsiasi utilizzando un nome utente inesistente:

ssh nessuno@mioserver.com

In situazioni "standard" ci verrebbe comunque richiesta la password, mentre ora dovremmo ricevere il messaggio Permission denied (publickey)

[guida] Come disattivare login SSH password Ubuntu Server (Linux) - ssh disable password

Se invece ci connetteremo utilizzando un nome utente corretto da un PC che possiede una chiave asimmetrica valida, potremo accedere come di consueto.

Una nota su UsePAM

Alcuni articoli che ho consultato mentre aggiornavo la presente guida suggeriscono di impostare anche un'altra opzione nel file di configurazione che abbiamo modificato poco fa :

UsePAM no

In verità, pare che questa modifica possa introdurre alcuni effetti collaterali indesiderati, senza nessun beneficio reale in merito alla disattivazione del login SSH con password. Non la consiglio.

Fonti e riferimenti

In questa guida abbiamo visto come disattivare il login tramite password di SSH, mantenendo quindi l'autenticazione tramite chiave come unica modalità di accesso.

La guida è frutto della mia esperienza diretta, ma ho comunque ri-verificato la correttezza del tutto consultando queste fonti: