Come aggiungere chiavi SSH su Ubuntu 20.04

Imposta un accesso sicuro senza password al tuo server Ubuntu remoto usando le chiavi SSH

SSH è un protocollo di rete client-server sicuro che aiuta un computer client a connettersi e comunicare con un server remoto. La connessione SSH garantisce che i comandi che vengono digitati nel terminale vengano inviati al server remoto tramite un canale crittografato.

Esistono due tipi di meccanismi di autenticazione utilizzati per connettersi al server remoto, l'autenticazione basata su password (soggetto ad attacchi Brute-force) e l'autenticazione basata su chiavi SSH (che è molto sicura).

Nell'autenticazione basata su chiave SSH, viene generata una coppia di chiavi sul computer client, denominata chiave pubblica e chiave privata. Una copia di questa chiave pubblica è resa disponibile sul server remoto. Quando un client invia una richiesta di connessione al server, il server genera una stringa casuale e la crittografa utilizzando la chiave pubblica. Questa stringa può essere decrittografata solo utilizzando la chiave privata disponibile sul computer client. Questo metodo garantisce l'accesso al server solo dai client che contengono la chiave privata.

In questa guida vedremo come configurare le chiavi SSH sul server Ubuntu 20.04 LTS.

Verifica se hai una chiave SSH esistente sul tuo computer

Per verificare se esiste già una coppia di chiavi SSH sul tuo computer, digita questo comando nel tuo terminale.

ls -l ~/.ssh/id_*.pub

Se il comando precedente ritorna Nessun file o directory con questo nome o nessun risultato trovato, allora significa che la coppia di chiavi SSH non esiste.

Se disponi di una coppia di chiavi SSH esistente, puoi utilizzare la stessa coppia di chiavi per accedere a due server remoti oppure puoi anche creare una coppia di chiavi diversa con un nome diverso. Passiamo al passaggio successivo e vediamo come generare chiavi SSH per entrambi i casi.

Creazione di chiavi SSH su un computer client

Per generare una nuova coppia di chiavi SSH sul tuo computer, digita il comando come mostrato di seguito.

ssh-keygen

Per impostazione predefinita, le chiavi SSH sono a 2048 bit. Per una maggiore sicurezza, se vuoi generare chiavi SSH con bit più alti, usa il seguente comando.

ssh-keygen -b 4096

Se il comando viene eseguito correttamente, sullo schermo verrà visualizzato il seguente messaggio.

generazione di una coppia di chiavi rsa pubblica/privata. Inserisci il file in cui salvare la chiave (/home/harshit/.ssh/id_rsa):

Ora, se non disponi di una coppia di chiavi SSH esistente sul tuo computer, premi semplicemente accedere, ma se disponi di una chiave SSH esistente, salva la chiave con un nome file diverso come mostrato di seguito.

Inserisci il file in cui salvare la chiave (/home/your_name/.ssh/id_rsa): /home/your_name/.ssh/id_rsa_xxx

Sostituisci il xxx alla fine del nome del file con un nome appropriato, come mostrato di seguito e premere accedere.

Inserisci il file in cui salvare la chiave (/home/tuo_nome/.ssh/id_rsa): /home/tuo_nome/.ssh/id_rsa_client_1

Il prossimo prompt ti chiederà di inserire una passphrase di lunghezza arbitraria, garantirà una sicurezza a due livelli sul tuo dispositivo.

Inserisci passphrase (vuota per nessuna passphrase): inserisci di nuovo la stessa passphrase:

L'inserimento di questa passphrase assicurerà che anche se una persona ottiene l'accesso alla tua chiave privata, non sarà in grado di accedere al tuo server remoto senza questa passphrase.

Una volta completato l'intero processo, sullo schermo viene visualizzato il seguente messaggio.

ssh-keygen -b 4096 Una volta completato l'intero processo di generazione della chiave SSH, sullo schermo viene visualizzato il seguente messaggio.

Le chiavi SSH sono state generate sul tuo sistema. Ora è il momento di copiare la chiave pubblica sul server remoto.

Copiare la chiave pubblica sul server Ubuntu remoto

Il metodo più semplice e veloce per copiare la chiave pubblica sul server remoto è utilizzare il ssh-copy-id utilità. Ma se questa utility non è disponibile sul tuo computer per qualche motivo, puoi anche utilizzare altri metodi forniti in questa sezione.

Utilizzo dell'utilità ssh-copy-id

Il ssh-copy-id L'utilità è per impostazione predefinita disponibile sul tuo computer Ubuntu che copia la chiave pubblica dal tuo dispositivo nella directory appropriata del tuo computer Ubuntu remoto.

Per copiare la chiave ssh pubblica, digita semplicemente il comando nel tuo terminale, come mostrato di seguito.

ssh-copy-id nomeutente@nomehost

Sostituisci il nome utente e Nome host nel comando sopra con il nome utente e il nome host del tuo server.

Il seguente messaggio apparirà sul tuo terminale se ti connetti al tuo host per la prima volta, digita e premere accedere.

Impossibile stabilire l'autenticità dell'host "172.105.XX.XX (172.105.XX.XX)". L'impronta digitale della chiave ECDSA è xx:xx:xx:xx:77:fe:73:xx:xx:55:00:ad:d6:xx:xx:xx. Sei sicuro di voler continuare a connetterti (sì/no)? 

Ora il ssh-copy-id l'utility cercherà il file con il nome id_rsa.pub che contiene la chiave SSH pubblica. Una volta completato il processo di scansione, ti verrà chiesto di inserire la password del tuo server remoto, come mostrato di seguito. Digita la password e premi accedere.

/usr/bin/ssh-copy-id: INFO: tentativo di accedere con le nuove chiavi, per filtrare quelle già installate /usr/bin/ssh-copy-id: INFO: 1 chiave/i ) rimangono da installare: se ti viene richiesto ora, è necessario installare le nuove chiavi [email protected] password:

Una volta aggiunta la chiave, il seguente messaggio apparirà sul tuo terminale come output.

Numero di chiavi aggiunte: 1 Ora prova ad accedere alla macchina, con: "ssh '[email protected]'" e controlla per assicurarti che siano state aggiunte solo le chiavi che volevi.

Nel caso tu abbia più chiavi SSH sul tuo computer client, per copiare la chiave pubblica appropriata sul tuo computer remoto digita il comando nel modello mostrato di seguito.

ssh-copy-id -i id_rsa_xxx.pub nomeutente@host

Suggerimento

Non dimenticare di mettere .pub alla fine del nome del file mentre digiti nel terminale.

Copia della chiave pubblica con il metodo delle tubazioni

Digita il seguente comando nel terminale se ssh-copy-id l'utilità non è disponibile. Questo comando può sembrare un po' più lungo ma funziona in modo appropriato.

gatto ~/.ssh/id_rsa.pub | ssh remote_username@server_ip_address "mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys && chmod -R go= ~/.ssh && cat >> ~/.ssh/authorized_keys"

Sostituire nomeutente_remoto e indirizzo IP del server con il tuo nome utente e indirizzo IP.

Se hai più chiavi SSH disponibili sul tuo computer, sostituisci le id_rsa.pub con il file di chiave SSH pubblico di tua scelta. Per esempio, id_rsa_client_1.pub.

Digita la password dell'utente remoto quando richiesto e premi accedere.

password di [email protected]:

Una volta digitata la password, il id_rsa.pub il file verrà copiato nel chiavi_autorizzate file del server remoto.

Copia manuale della chiave pubblica

Utilizzare questo metodo quando non si ha accesso al sistema remoto tramite l'autenticazione con password.

Apri il id_rsa.pub file usando il gatto comando nel terminale. Puoi anche aprirlo da un editor di testo, lo scopo è solo quello di copiare il contenuto del file.

gatto ~/.ssh/id_rsa.pub

Il contenuto del file sarà simile a quello mostrato di seguito.

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQComjFtuHvHQ67uf3RXg2wgK4EtxBvBvLCtlc4chG + nJ1cbuJjJ6G8az4xsRN1Q7hrV4dYR81Tk3gRApiMdGcMvInU3Vb7Wq3nh9GS4xnLRH1wvb149wogum2MycIES69Xh0cib + VvJyZ + dGO8zRNT64 + SvfiecRV0llnBGWDRqrIGtMHJkKz7VDKuSyzDit / Ck1NFXxC6Plw3cEMOhWHycm8bnSHSoVpr95ySxxnokX4 / 9iAlvOovxTpMpmDaDvuHKgHxcsOv9Q4sz // 6HY / 65 + qqmiuLyuIQXjDiiYTjHTx + VNi6S0iMLoN6XgDLp0MfG6kLvZ0Z + csqdvIDQfMuH your_name @ your_PC

Ora accedi al tuo server remoto e incolla il contenuto copiato usando il comando mostrato di seguito. Sostituisci il sopra_stringa con il contenuto copiato.

echo above_string >> ~/.ssh/authorized_keys

Configurazione di più chiavi SSH (opzionale)

Questo passaggio è per le persone che hanno configurato più chiavi SSH sul proprio computer client. Salta questa sezione se hai una sola configurazione della chiave SSH.

Per gestire più chiavi SSH, ora creeremo a config file all'interno del .ssh directory utilizzando il comando mostrato di seguito.

cd ~/.ssh vim config

Tipo io per entrare in modalità comando e digitare i dettagli di più host, come mostrato nell'esempio seguente:

Host remote-ubuntu-server HostName 172.105.XX.XX Radice utente IdentityFile ~/.ssh/id_rsa_client_1 Host remote-ubuntu-server HostName 172.106.XX.XX Radice utente IdentityFile ~/.ssh/id_rsa_client_2

Allo stesso modo, digita i dettagli di altri server remoti e le loro chiavi. Una volta completato il processo, premere Esc e :wq per salvare ed uscire.

Ora i processi successivi sono gli stessi per avere chiavi SSH singole o multiple sul computer client.

Accedi al tuo server remoto usando le chiavi SSH

Una volta completato il processo di copia della tua chiave pubblica, accedi al tuo server remoto digitando il comando come mostrato di seguito.

ssh nomeutente_remoto@indirizzo_ip_server

Se hai fornito la passphrase durante la generazione della coppia di chiavi, ti verrà chiesto di inserirla. Una nuova sessione si aprirà al termine del processo di autenticazione.

Ora hai configurato correttamente l'autenticazione basata su chiavi SSH sul tuo server remoto. Ma l'autenticazione basata su password è ancora attiva sul tuo server, questo significa che il tuo server remoto è ancora soggetto ad attacchi di forza bruta.

Quindi ora disattiveremo completamente il meccanismo di accesso basato su password dal nostro server remoto.

Disabilita il meccanismo di accesso basato su password

Prima di apportare modifiche, assicurati che l'utente root o qualsiasi utente abilitato a sudo per il tuo account remoto abbia accesso al tuo server utilizzando il sistema di autenticazione basato su chiave SSH. Questo passaggio bloccherà o disabiliterà completamente l'accesso basato su password, quindi è fondamentale che almeno un utente con privilegi di root abbia accesso al server tramite la chiave SSH.

Accedi al tuo server Ubuntu remoto e digita il comando mostrato di seguito.

sudo vim /etc/ssh/sshd_config
  • premere Esc, / e digita "PasswordAuthentication" e premi accedere.
  • Ora premi io e modificare il valore di "PasswordAuthentication yes" in "PasswordAuthentication no".
  • premere Esc e ripeti la procedura precedente per trovare "ChallengeResponseAuthentication", "UsePAM" e modifica i loro valori in no anche.
PasswordAuthentication no ChallengeResponseAuthentication no UsePAM no

Una volta che tutti i valori sono impostati su no, premere Esc, genere :wq e colpisci accedere.

Per attivare tutte le modifiche riavviare il ssh servizio utilizzando il comando seguente.

sudo systemctl riavvia ssh

Ora apri una nuova finestra di terminale sul tuo computer e verifica che l'autenticazione della tua chiave SSH funzioni correttamente prima di chiudere la sessione corrente.

Una volta completato il processo di verifica, chiudi tutte le sessioni in esecuzione.

Ora abbiamo configurato con successo l'autenticazione basata su chiave SSH sul nostro server Ubuntu 20.04. Ora nessuno può accedere al tuo server utilizzando un meccanismo di accesso basato su password.