Come abilitare gli accessi SSH senza password su Linux
È un’ottima idea accedere al tuo server SSH senza password. Seriamente, liberatene. Non è necessario utilizzare 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 si frappone tra un cattivo attore e il tuo server, dovresti assolutamente essere nervoso.
Ecco perché l’autenticazione basata su chiave RSA è molto migliore. Puoi configurare e proteggere il tuo server Linux per consentire l’accesso solo da computer che detengono le chiavi RSA che sono già state accettate. Chiunque altro verrà rifiutato immediatamente. Come ulteriore vantaggio, puoi creare quelle chiavi con o senza password, che dipende interamente da te. Tuttavia, una chiave complessa senza password va bene nella maggior parte dei casi.
Se usi dispositivi Linux anche a casa, hai l’ulteriore vantaggio della praticità. Supponi di voler configurare l’X-forwarding SSH dalla tua workstation Linux al tuo laptop. Vuoi davvero inserire la tua password ogni volta che esegui un programma remoto? Imposta le chiavi SSH e non sarà necessario.
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 sui 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 devi generare la chiave. È anche una buona idea specificare la quantità di bit con il -b
flag e il tipo con -t
. Una chiave a 4096 bit è la migliore, in quanto fornisce una crittografia più forte.
ssh-keygen -t ed25519
Innanzitutto, l’utilità chiederà dove si desidera memorizzare la chiave. Basta premere Enterper la directory predefinita. Quando richiede una password, lascialo vuoto per una chiave senza password e un’autenticazione senza password. Se vuoi usare una password per la tua chiave, inseriscila qui.
Il tuo computer impiegherà un paio di secondi per generare la tua chiave. Al termine, stamperà una rappresentazione artistica ASCII della tua chiave sul terminale.
Invio della chiave all’host Linux remoto
Per utilizzare la tua chiave, dovrai inviarla al tuo server remoto. OpenSSH ha anche un’altra utility integrata per questo. Digli dov’è la tua chiave e con quale utente sul server associarla.
ssh-copy-id -i ~/.ssh/id_ed25519.pub username@ip_remote_host
Sostituisci ip_remote_host
con l’effettivo indirizzo IP dell’host remoto, che gestirai tramite SSH. Sostituire username
con il nome utente effettivo sull’host remoto.
È fondamentale utilizzare l’ -i
opzione per specificare il file di identità che contiene la chiave pubblica. Se provi a utilizzare la tua chiave SSH senza questa opzione, potresti ricevere un errore.
Testare la connessione SSH in Linux
Con la tua chiave SSH nel server remoto, ora puoi verificare se la tua connessione funziona correttamente.
Accedi con il seguente comando:
ssh username@ip_remote_host
L’host remoto effettuerà l’accesso senza richiedere la password dell’account utente.
Tuttavia, se hai commesso un errore durante il processo, il demone SSH tornerà automaticamente all’autenticazione della password per il tuo account utente. Ciò ti consente di accedere comunque al tuo server remoto anche se disponi di una chiave RSA non funzionante.
Configurazione di SSH per bloccare le password
Per la massima sicurezza, devi disabilitare gli accessi con password SSH sul tuo server Linux. Simile all’abilitazione dell’autenticazione a due fattori in SSH, questo impedisce a chiunque di forzare la propria strada nel tuo server.
È importante assicurarsi di poter accedere in modo affidabile con la chiave SSH prima di eseguire questa operazione, poiché è possibile bloccarsi dal server remoto se si dispone di una chiave malfunzionante.
Puoi trovare il file di configurazione per il tuo demone SSH in “/etc/ssh/sshd_config”. Apri il file sul server usando sudo e il tuo editor di testo preferito. Ad esempio, apri questo file utilizzando nano eseguendo il seguente comando:
sudo nano /etc/ssh/sshd_config
Trova le righe sottostanti premendo Ctrl+ We modificale in modo che assomiglino all’esempio. Rimuovere il commento da entrambe le voci e modificare i valori in no
.
PasswordAuthentication no
PermitEmptyPasswords no
PasswordAuthentication
specifica se utilizzare l’autenticazione tramite password. Lo impostiamo su “no” perché vogliamo utilizzare solo le chiavi SSH.
PermitEmptyPasswords
specifica se il server consente l’accesso con una password vuota. Non dovresti mai permetterlo, quindi lo impostiamo su “no”.
Quindi, trova la riga “UsePAM” e modificala in “no”. Ciò impedirà al demone di utilizzare metodi di autenticazione (password, Kerberos, ecc.) diversi dalle chiavi SSH.
UsePAM no
Salvare il file premendo Ctrl+ O, quindi Ctrl+ Xe ricaricare il server SSH.
sudo systemctl restart ssh
Ora che hai configurato correttamente il tuo server per utilizzare solo chiavi SSH per l’autenticazione, chiunque tenti di accedere senza una chiave RSA valida verrà immediatamente negato.
Domande frequenti
Ricevo una “Connessione rifiutata” quando invio la mia chiave SSH al mio server Linux. Come posso risolvere questo problema?
Assicurarsi che il server SSH sia in esecuzione sull’host remoto. Puoi verificarlo eseguendo sudo systemctl status ssh
. Se il servizio non è in esecuzione, puoi avviarlo con questo comando: sudo systemctl start ssh
.
Se sul server è in esecuzione un firewall, assicurarsi 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 messaggio di errore “Autorizzazione negata (chiave pubblica)” quando tento di accedere. Cosa devo fare?
Questo errore significa che hai configurato il tuo server per utilizzare le chiavi per l’autenticazione, ma stai ancora tentando di accedere con una password. Ciò 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 di aver specificato la chiave pubblica corretta quando ti connetti.
Quando tento di connettermi, ricevo l’errore “Verifica chiave host non riuscita”. Come posso risolvere questo problema?
Questo errore indica che la chiave host del server SSH è cambiata. Può succedere 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ì. È possibile utilizzare l’ -f
opzione in OpenSSH per specificare la chiave esatta che si desidera utilizzare per connettersi a un server remoto. Ad esempio, l’esecuzione ssh -f ~/.ssh/id_rsa_2 username@remote_ip_address
ti collegherà al tuo server remoto utilizzando la chiave “id_rsa_2” invece del valore predefinito “id_rsa”.
Tuttavia, è importante notare che questo comando funzionerà solo se il tuo server remoto riconosce già la tua nuova chiave. Devi prima copiarlo sul tuo server remoto usando ssh-copy-id
. Analogamente ai passaggi precedenti, puoi eseguire questa operazione tramite password o autenticazione con chiave RSA.
Ricevo un errore “Autorizzazione negata” 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’ ssh-copy-id
utilità dovrebbe risolvere correttamente eventuali problemi di accesso non appena si connette al server remoto. Tuttavia, ci sono casi in cui questa funzione si interrompe e non riesce a copiare correttamente “id_rsa” della tua macchina locale.
Per risolvere questo problema, 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.
Credito immagine: Unsplash . Tutte le modifiche e gli screenshot di Ramces Red.
Lascia un commento