Linux: accesso SSH senza password con chiavi private
Nel caso in cui non lo sapeste, Secure Shell (SSH) è un protocollo e interfaccia a riga di comando basata su UNIX per accedere in modo sicuro ad un computer remoto. Il metodo predefinito per un accesos SSH è l’autenticazione basata su password: conoscendo il nome utente e la password di un utente del sistema remoto, potete effettuare la login a tale sistema.
Utilizzare una coppia di chiavi privata/pubblica invece di (o in aggiunta a) un’autenticazione con password è un modo conveniente, veloce e potenzialmente più sicuro di accedere ad un sistema remoto, ed è molto semplice da implementare.
Quindi, vediamo come configurare una login SSH tra un client e un server Linux CentOS (la procedura per altre distribuzioni è la stessa, forse con qualche piccola differenza) senza password utilizzando una chiave privata.
1. Verificare eventuali coppie di chiavi esistenti
Prima di tutto, controlliamo se il nostro client ha già una coppia di chiavi che è possibile utilizzare. Nell’ipotesi in cui abbiate un client Linux, loggatevi nel vostro sistema (client) e scrivete:
[fsicurezza@localhost ~]# ls ~/.ssh
Se siete su Mac, troverete queste chiavi nella sottocartella “.ssh” della vostra cartella home (~./ssh/), mentre su Windows dovreste trovarle in %USERPROFILE%\.ssh (C:\Documents and Settings\il-vostro-username\.ssh\ o C:\Users\il-vostro-username\.ssh a seconda della vostra versione di Windows).
Se esiste un file con il nome “id_rsa.pub” o “id_dsa.pub”, avete giù una chiave. In questo caso, passate al punto 3.
2. Generare una nuova coppia di chiavi
Effettuate la login al vostro sistema locale (client) e generate una chiave privata utilizzando il comando “/usr/bin/ssh-keygen” con alcuni parametri. Utilizzando il flag “-t” richiederemo una chiave di tipo “RSA”, che è uno dei tipi più recenti e sicuri. Con il flag “-C” aggiungeremo un commento (che potete pensare come una sorta di descrizione o etichetta per questa chiave): utilizzando il vostro indirizzo email potrete identificare la chiave più semplicemente in futuro. Dopo aver confermato questo comando, vi verrà chiesto di:
- Inserire un nome per questa nuova chiave – premete INVIO per accettare nome e posizione predefinite.
- Inserire una passphrase – anche se l’autenticazione SSH con chiave pubblica può essere utilizzata in modo sicuro senza password, dovreste inserire una passphrase abbastanza forte (con molti caratteri di tipo diverso) per aumentare ulteriormente il livello di sicurezza.
[fsicurezza@localhost ~]# ssh-keygen -t rsa -C "fsicurezza@nullalo.com" Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: 04:53:39:ff:53:33:b7:d0:b7:7b:39:fa:32:e3:60:d9 fsicurezza@nullalo.com The key's randomart image is: +--[ RSA 2048]----+ | o... | | oo | | .o . | | . . .+.o| | S . ..++| | = o | | + E o| | . .+ +.| | .o*.o| +-----------------+
Su Windows, è possibile utilizzare PuTTY
Muovete il mouse per generare dati casuali, quindi compilate i campi “Key comment”, “Key passphrase” e “Confirm passphrase” con gli stessi dati menzionati poc’anzi.
Ora salvate sia la chiave pubblica che quella privata in %USERPROFILE%\.ssh\, utilizzando id_rsa come nome per la chiave privata e id_rsa.pub per la chiave pubblica. Poiché utilizzaremo il formato OpenSSH per la coppia di chiavi, per salvare la chiave privata utilizzate “Conversions->Export OpenSSH key”, mentre per la chiave pubblica copiate e incollate semplicemente il contenuto del riquadro “Public key for pasting into OpenSSH authorized_keys file” in un file id_rsa.pub vuoto.
ATTENZIONE: se avete intenzione di utilizzare PuTTY per effettuare la login SSH al vostro server, dovete salvare la chiave privata in formato .ppk, cliccando il tasto “Save private key”.
Potete anche utilizzare Bitvise Tunnelier per generare la vostra coppia di chiavi: in questo caso, le chiavi verranno memorizzate nella chiave di registro HKEY_CURRENT_USER\Software\Bitvise\HostKeys, ma potrete utilizzare il software per esportarle sotto forma di file in un’altro percorso.
Abbiamo ora una coppia di chiavi privata e pubblica che, come già detto, su Linux vengono solitamente salvate come /home/il-vostro-username/.ssh/id_rsa (chiave privata) e /home/il-vostro-username/.ssh/id_rsa.pub (chiave pubblica), su Mac le troverete nella sottocartella “.ssh” della vostra cartella home (~./ssh/), e su Windows vengono solitamente memorizzate in %USERPROFILE%\.ssh\.
La vostra chiave privata è un file molto prezioso, è come memorizzare la password in un file. Se ottenuto da terzi, potrebbe essere usato per accedere ai vostri sistemi, quindi fatene un backup e tenetela al sicuro.
Se date un’occhiata all’attuale contenuto del file della vostra chiave pubblica, troverete qualcosa del genere:
[fsicurezza@localhost ~]# cat ~/.ssh/id_rsa.pub ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAiqxKKnDeav9gM7By0IdECGlVjWKvvSwKtOlmdYwbFYra2F/EAVuOqL2KsTE rVE0QzONIo7c854oADlw6UQKjkCfxDrk61ph1yUVgZeI3LeZpILPNhcSndp0I0eMBehQIPYQ2ibBhr+sUt7akSRDAKh/mLQ 8MW2Ety1n26D3EmzUyFVWYA6Ccw6LtJocb/29/pqt6FpRUIfFc4TNfSJ4eOjcrc2+yL/b3H0p1ENqlenQT6lxDBbPlNRee+ UzjdDrSvmMP8f7bQVht4QzcCjrHUPa4BjUoDPkGAEDcywqIkJuNBzTYcwaPpK7QwS9lQ8lVCdtDAtRLfAkvqjMc8vLRvQ== fsicurezza@nullalo.com
3. Condividere la vostra chiave pubblica
Per utilizzare la vostra chiave privata, dovete condividere la chiave pubblica con un server remoto. Detto semplicemente, il server remoto conserva una copia della chiave pubblica, che utilizza per verificare la corrispondenza con la vostra chiave privata quanto tentate di effettuare la login.
Su Linux, c’è un comando che installa automaticamente la nostra chiave pubblica su un host remoto: ssh-copy-id. Supponiamo che conosciate la password dell’account “admin” sul server “nullalo.com”, sul quale volete installare la vostra chiave pubblica. In questo caso scriverete:
[fsicurezza@localhost ~]# ssh-copy-id -i /home/fsicurezza/.ssh/id_rsa admin@nullalo.com admin@nullalo.com's password: [fsicurezza@localhost ~]#
Potete anche incollare la chiave utilizzando SSH:
[fsicurezza@localhost ~]# cat ~/.ssh/id_rsa.pub | ssh admin@nullalo.com "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
Se volete farlo manualmente, il concetto è che il file /home/il-vostro-username/.ssh/authorized_keys (su alcuni sistemi il nome del file è authorized_keys2) sul server remoto deve contenere una riga per ogni chiave pubblica dei client autorizzati.
4. Sicurezza aggiuntiva
Una volta che avete copiato le vostre chiavi SSH sul server e vi siete assicurati di poter effettuare l’accesso con le sole chiavi SSH, potete pensare di far sì che la login tramite l’utente root sia consentita solo utilizzando chiavi SSH.
Per fare ciò, aprite il file di configurazione di SSH:
sudo nano /etc/ssh/sshd_config
All’interno di questo file, trovate la linea che include PermitRootLogin e modificatela in modo da assicurarvi che gli utenti possano connettersi esclusivamente con la propria chiave SSH. Se la linea non esiste o è commentata, aggiungetela:
PermitRootLogin without-password
Ricaricate il servizio per rendere effettive le variazioni:
service sshd reload
5a. Login senza Password da client Linux
Nell’ipotesi in cui abbiate seguito tutti i passi, ora potete accedere al sistema remoto scrivendo semplicemente:
[fsicurezza@localhost ~]# ssh admin@nullalo.com Last login: Mon Mar 21 10:28:33 2016 from 192.168.0.1 [admin@nullalo.com ~]#
senza richiesta di alcuna password, fatta eccezione per la passphrase se l’avete utilizzata durante la generazione della coppia di chiavi.
5b. Login senza Password da Windows utilizzando Bitvise Tunnelier come client
Su Windows, è possibile utilizzare Bitvise Tunnelier o PuTTY per accedere via SSH al nostro server.
Con Bitvise Tunnelier, è necessario importare la chiave privata cliccando su “Client key manager“, quindi “Import” e infine selezionato il file “id_rsa”.
Vi verrà chiesta la passphrase, se utilizzata durante la creazione della coppia di chiavi.
Ora potete effettuare l’accesso selezionando publickey per la voce “Initial method” e scegliendo la Client key appropriata (nell’esempio quella denominata “Profile 2”).
Dopo aver cliccato “Login”, vi verrà chiesto di salvare la chiave dell’host (solo per la prima connessione):
Cliccate su “Accept and Save”, quindi vi verrà chiesta la passphrase della chiave pubblica (questa è la password della coppia di chiavi, NON la password dell’utente che sta effettuando l’accesso) se necessaria.
Se è tutto ok, effettuerete l’accesso al server remoto.
5c. Login senza Password da Windows utilizzando PuTTY come client
Se volete utilizzare PuTTY come cliente invece di Bitvise Tunnelier, dovrete specificare la posizione della chiave privata del vostro client (che corrisponde alla chiave pubblica che avete memorizzato sul server nel file authorized_keys) in Connection->SSH->Auth->Private key file for authentication.
ATTENZIONE: La chiave privata deve essere memorizzata in formato .ppk se volete utilizzarla con PuTTY.
Ora inserite i dettagli della connessione (Nome dell’Host o indirizzo IP e Porta) e cliccate su “Open”:
Dopo l’avviso relativo al fatto che la chiave host del server non è ancora memorizzata nel registro (potete rispondere “Sì”):
vi verrà chiesto lo username (nel nostro esempio, “admin”) ed eventualmente la passphrase della coppia di chiavi, quindi avrete finalmente accesso al sistema.
È tutto! Se avete domande, non esitate ad aggiungere un commento a quest’articolo.
Nessun Commento