Come abilitare accessi SSH senza password su Linux

È un’ottima idea accedere al tuo server SSH senza una password. Sul serio, liberatene. Non c’è bisogno di usare una password su uno dei servizi più attaccati sui server Linux, giusto? Proteggere un server SSH utilizzando l’autenticazione standard basata su password è una cattiva idea. Gli aggressori possono facilmente forzare le password, e quando sono l’unica cosa che separa un attore malintenzionato dal tuo server, dovresti sicuramente essere nervoso.
Indice
- Installa i pacchetti
- Genera la tua chiave SSH in Linux
- Invia la tua chiave all’host Linux remoto
- Testa la tua connessione SSH in Linux
- Configura SSH per bloccare le password
- Domande frequenti
Ecco perché l’autenticazione basata su chiave RSA è molto migliore. Puoi configurare e proteggere il tuo server Linux per consentire l’accesso solo ai computer che possiedono le chiavi RSA già accettate. Chiunque altro verrà rifiutato immediatamente. Come ulteriore vantaggio, puoi creare quelle chiavi con o senza una password, il che dipende completamente da te. Una chiave forte senza password va bene nella maggior parte dei casi, comunque.
Se utilizzi dispositivi Linux anche a casa, hai il vantaggio aggiuntivo della comodità. Diciamo che vuoi impostare l’inoltro X SSH dal tuo workstation Linux al tuo laptop. Vuoi davvero inserire la tua password ogni volta che esegui un programma remoto? Imposta le chiavi SSH e non ne avrai bisogno.
Installa i pacchetti
Ci sono un paio di pacchetti di cui hai bisogno. Probabilmente ne hai già alcuni, ma è una buona idea controllare. I pacchetti sono gli stessi sia sul server che sul client. Tuttavia, c’è anche una buona possibilità che entrambe le macchine siano server e client l’una per l’altra (situazione domestica), quindi potresti voler assicurarti di aver installato questi pacchetti.
Il metapacchetto OpenSSH non è installato per impostazione predefinita su sistemi Debian o Ubuntu. Se non lo hai già installato, puoi farlo eseguendo il seguente comando:
sudo apt install ssh
Genera la tua chiave SSH in Linux
È davvero facile generare la tua chiave SSH in Linux. Basta dire a OpenSSH che hai bisogno di generare la chiave. È anche una buona idea specificare il numero di bit con il flag -b e il tipo con -t. Una chiave a 4096 bit è la migliore, poiché fornisce una crittografia più forte.
ssh-keygen -t ed25519Per prima cosa, l’utilità chiederà dove vuoi memorizzare la chiave. Basta premere Invio per la directory predefinita. Quando ti chiede una password, lasciala vuota per una chiave senza password e un’autenticazione senza password. Se vuoi utilizzare una password per la tua chiave, inseriscila qui.
Il tuo computer impiegherà un paio di secondi per generare la tua chiave. Quando è finito, stamperà una rappresentazione ASCII art della tua chiave nel terminale.
Invia la tua chiave all’host Linux remoto
Per utilizzare la tua chiave, dovrai inviarla al tuo server remoto. OpenSSH ha un’altra utilità integrata per questo. Dì dove si trova la tua chiave e quale utente sul server associarla.
ssh-copy-id -i ~/.ssh/id_ed25519.pub username@ip_remote_hostSostituisci ip_remote_host con l’indirizzo IP effettivo dell’host remoto, che gestirai tramite SSH. Sostituisci username con il nome utente effettivo sull’host remoto.

È fondamentale utilizzare l’opzione -i per specificare il file di identità che contiene la tua chiave pubblica. Se provi a utilizzare la tua chiave SSH senza questa opzione, potresti ricevere un errore.
Testa la tua connessione SSH in Linux
Con la tua chiave SSH nel server remoto, ora puoi testare se la tua connessione funziona correttamente.
Accedi con il seguente comando:
ssh username@ip_remote_hostL’host remoto ti registrerà senza chiedere la password dell’account utente.

Tuttavia, se hai commesso un errore durante il processo, il demone SSH tornerà automaticamente all’autenticazione tramite password per il tuo account utente. Questo ti consente comunque di accedere al tuo server remoto anche se hai una chiave RSA non funzionante.

Configura SSH per bloccare le password
Per la migliore sicurezza, devi disabilitare gli accessi SSH con password sul tuo server Linux. Simile all’abilitazione dell’autenticazione a due fattori in SSH, questo impedisce a chiunque di forzare l’accesso al tuo server.

È importante assicurarsi di poter accedere in modo affidabile con la tua chiave SSH prima di fare questo, poiché è possibile bloccarsi fuori dal proprio server remoto se si ha una chiave malfunzionante.
Puoi trovare il file di configurazione per il tuo demone SSH in “/etc/ssh/sshd_config.” Apri il file sul server utilizzando sudo e il tuo editor di testo preferito. Ad esempio, apri questo file usando nano eseguendo il seguente comando:
sudo nano /etc/ssh/sshd_configTrova le righe sottostanti premendo Ctrl + W e modificale per apparire come nell’esempio. Decommenta entrambe le voci e cambia i valori in no.
PasswordAuthentication no
PermitEmptyPasswords no
PasswordAuthentication specifica se utilizzare l’autenticazione tramite password. Abbiamo impostato questo su “no” perché vogliamo utilizzare solo le chiavi SSH.
PermitEmptyPasswords specifica se il server consente l’accesso con una password vuota. Non dovresti mai consentire questo, quindi lo impostiamo su “no.”
Successivamente, trova la riga “UsePAM” e cambiala in “no.” Questo impedirà al demone di utilizzare qualsiasi metodo di autenticazione (password, Kerberos, ecc.) diverso dalle chiavi SSH.
UsePAM no
Salva il file premendo Ctrl + O, poi Ctrl + X e ricarica il server SSH.
sudo systemctl restart sshOra che hai configurato con successo il tuo server per utilizzare solo le chiavi SSH per l’autenticazione, chiunque cerchi di accedere senza una chiave RSA valida verrà immediatamente negato.

Domande frequenti
Ricevo un “Connessione rifiutata” quando invio la mia chiave SSH al mio server Linux. Come posso risolvere questo?
Assicurati che il server SSH sia in esecuzione sull’host remoto. Puoi controllarlo eseguendo sudo systemctl status ssh. Se il servizio non è in esecuzione, puoi avviarlo con questo comando: sudo systemctl start ssh.
Se un firewall è attivo sul server, assicurati che la porta 22 sia aperta. Puoi farlo eseguendo sudo ufw status. Se SSH non è elencato, puoi abilitarlo eseguendo questo comando: sudo ufw allow ssh.
Ricevo un errore “Permesso negato (publickey)” quando provo ad accedere. Cosa dovrei fare?
Questo errore significa che hai configurato il tuo server per utilizzare le chiavi per l’autenticazione, ma stai ancora cercando di accedere con una password. Questo può essere dovuto a una chiave RSA mancante o a un’impostazione SSH errata. Controlla di aver copiato correttamente la tua chiave pubblica sul server e che stai specificando la chiave pubblica corretta quando ti connetti.
Ricevo un errore “Verifica della chiave host fallita” quando provo a connettermi. Come posso risolvere questo?
Questo errore significa che la chiave host del server SSH è cambiata. Può accadere se il server è stato reinstallato. Puoi rigenerare una nuova chiave pubblica e copiarla sull’host remoto. Ripeti i passaggi in questo articolo per rigenerare e aggiungere la nuova chiave al server.
È possibile utilizzare più chiavi SSH sullo stesso server Linux remoto?
Sì. Puoi utilizzare l’opzione -f in OpenSSH per specificare la chiave esatta che desideri utilizzare per connetterti a un server remoto. Ad esempio, eseguendo ssh -f ~/.ssh/id_rsa_2 username@remote_ip_address ti connetterai al tuo server remoto utilizzando la chiave “id_rsa_2” invece della predefinita “id_rsa.”
Tuttavia, è importante notare che questo comando funzionerà solo se il tuo server remoto riconosce già la tua nuova chiave. Devi prima copiarla sul tuo server remoto utilizzando ssh-copy-id. Simile ai passaggi sopra, puoi farlo sia tramite password che autenticazione con chiave RSA.
Ricevo un errore “Permesso negato” ogni volta che provo a copiare la mia chiave SSH sul mio server.
Questo problema è molto probabilmente dovuto a un problema di autorizzazioni nel tuo server remoto. Nella maggior parte dei casi, l’utilità ssh-copy-id dovrebbe risolvere correttamente eventuali problemi di accesso non appena si connette al tuo server remoto. Tuttavia, ci sono casi in cui questa funzione si interrompe e non riesce a copiare correttamente la “id_rsa” della tua macchina locale.
Per risolvere questo, accedi al tuo server remoto ed esegui chmod 700 /home/$USER/.ssh/* && chmod 600 /home/$USER/.ssh. Questo imposterà i bit di autorizzazione corretti sia per la cartella “.ssh” che per il suo contenuto.
Crediti immagine: Unsplash. Tutte le modifiche e gli screenshot di Ramces Red.