Introduzione
SSH, o shell sicura, è un protocollo crittografato utilizzato per amministrare e comunicare con i server. Quando si lavora con un server Rocky Linux, è probabile che si trascorra la maggior parte del tempo in una sessione di terminale connessa al server tramite SSH.
In questa guida, ci concentreremo sulla configurazione delle chiavi SSH per un server Rocky Linux 9. Le chiavi SSH forniscono un metodo diretto e sicuro per accedere al proprio server e sono raccomandate per tutti gli utenti.
Passaggio 1 — Creare la coppia di chiavi RSA
Il primo passaggio consiste nel creare una coppia di chiavi sulla macchina client (di solito il proprio computer locale):
- ssh-keygen
Per impostazione predefinita, ssh-keygen
creerà una coppia di chiavi RSA da 2048 bit, che è abbastanza sicura per la maggior parte degli utilizzi (è possibile passare facoltativamente il flag -b 4096
per creare una chiave da 4096 bit più grande).
Dopo aver inserito il comando, dovresti vedere il seguente prompt:
OutputGenerating public/private rsa key pair.
Enter file in which to save the key (/your_home/.ssh/id_rsa):
Premi INVIO
per salvare la coppia di chiavi nella sottodirectory .ssh/
nella tua directory home, o specificare un percorso alternativo.
Se hai precedentemente generato una coppia di chiavi SSH, potresti vedere il seguente prompt:
Output/home/your_home/.ssh/id_rsa already exists.
Overwrite (y/n)?
Se scegli di sovrascrivere la chiave su disco, non sarai più in grado di autenticarti usando la chiave precedente. Fai molta attenzione quando selezioni sì, poiché si tratta di un processo distruttivo che non può essere invertito.
Dovresti quindi vedere il seguente prompt:
OutputEnter passphrase (empty for no passphrase):
Qui puoi opzionalmente inserire una passphrase sicura, che è altamente consigliata. Una passphrase aggiunge un ulteriore livello di sicurezza alla tua chiave, per impedire a utenti non autorizzati di accedere.
Dovresti quindi vedere il seguente output:
OutputYour identification has been saved in /your_home/.ssh/id_rsa.
Your public key has been saved in /your_home/.ssh/id_rsa.pub.
The key fingerprint is:
a9:49:2e:2a:5e:33:3e:a9:de:4e:77:11:58:b6:90:26 username@remote_host
The key's randomart image is:
+--[ RSA 2048]----+
| ..o |
| E o= . |
| o. o |
| .. |
| ..S |
| o o. |
| =o.+. |
|. =++.. |
|o=++. |
+-----------------+
Ora hai una chiave pubblica e privata che puoi usare per autenticarti. Il prossimo passo è ottenere la chiave pubblica sul tuo server in modo da poter utilizzare l’autenticazione basata su chiave SSH per accedere.
Passaggio 2 — Copia della Chiave Pubblica sul Tuo Server Rocky Linux
Il modo più veloce per copiare la tua chiave pubblica sull’host Rocky Linux è utilizzare un’utilità chiamata ssh-copy-id
. Questo metodo è altamente consigliato se disponibile. Se non hai ssh-copy-id
disponibile sulla tua macchina client, puoi utilizzare uno dei due metodi alternativi seguenti (copia tramite SSH basato su password o copia manuale della chiave).
Copiare la tua Chiave Pubblica Utilizzando ssh-copy-id
Lo strumento ssh-copy-id
è incluso di default in molti sistemi operativi, quindi potresti averlo disponibile sul tuo sistema locale. Perché questo metodo funzioni, devi già avere accesso SSH basato su password al tuo server.
Per utilizzare l’utilità, devi solo specificare l’host remoto a cui desideri connetterti e l’account utente a cui hai accesso SSH basato su password. Questo è l’account a cui verrà copiata la tua chiave pubblica SSH:
- ssh-copy-id username@remote_host
Potresti vedere il seguente messaggio:
OutputThe authenticity of host '203.0.113.1 (203.0.113.1)' can't be established.
ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.
Are you sure you want to continue connecting (yes/no)? yes
Questo significa che il tuo computer locale non riconosce l’host remoto. Questo accadrà la prima volta che ti connetti a un nuovo host. Digita sì
e premi INVIO
per continuare.
Successivamente, l’utilità scannerà il tuo account locale per la chiave id_rsa.pub
che abbiamo creato in precedenza. Quando trova la chiave, ti chiederà la password dell’account utente remoto:
Output/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
username@203.0.113.1's password:
Inserisci la password (ciò che digiti non verrà visualizzato per motivi di sicurezza) e premi INVIO
. L’utilità si connetterà all’account sull’host remoto utilizzando la password fornita. Quindi copierà i contenuti della tua chiave ~/.ssh/id_rsa.pub
nell’account remoto file ~/.ssh/authorized_keys
.
Dovresti vedere il seguente output:
OutputNumber of key(s) added: 1
Now try logging into the machine, with: "ssh 'username@203.0.113.1'"
and check to make sure that only the key(s) you wanted were added.
In questo momento, la tua chiave id_rsa.pub
è stata caricata sull’account remoto. Puoi procedere al Passaggio 3.
Copiare la Chiave Pubblica Usando SSH
Se non hai ssh-copy-id
disponibile, ma hai accesso SSH basato su password a un account sul tuo server, puoi caricare le tue chiavi usando un metodo SSH più convenzionale.
Possiamo fare ciò utilizzando il comando cat
per leggere il contenuto della chiave SSH pubblica sul nostro computer locale e instradando ciò tramite una connessione SSH al server remoto.
Dall’altra parte, possiamo assicurarci che la directory ~/.ssh
esista e abbia le autorizzazioni corrette nell’account che stiamo usando.
Poi possiamo stampare il contenuto che abbiamo instradato in un file chiamato authorized_keys
all’interno di questa directory. Utilizzeremo il simbolo di reindirizzamento >>
per aggiungere il contenuto anziché sovrascriverlo. Questo ci permetterà di aggiungere chiavi senza distruggere eventuali chiavi aggiunte in precedenza.
Il comando completo appare così:
- cat ~/.ssh/id_rsa.pub | ssh username@remote_host "mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys && chmod -R go= ~/.ssh && cat >> ~/.ssh/authorized_keys"
Potresti vedere il seguente messaggio:
OutputThe authenticity of host '203.0.113.1 (203.0.113.1)' can't be established.
ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.
Are you sure you want to continue connecting (yes/no)? yes
Questo significa che il tuo computer locale non riconosce l’host remoto. Questo accadrà la prima volta che ti colleghi a un nuovo host. Digita sì
e premi INVIO
per continuare.
In seguito, dovresti essere invitato a inserire la password dell’account utente remoto:
Outputusername@203.0.113.1's password:
Dopo aver inserito la tua password, il contenuto della tua chiave id_rsa.pub
verrà copiato alla fine del file authorized_keys
dell’account utente remoto. Prosegui con Passaggio 3 se ciò è avvenuto con successo.
Copia della chiave pubblica manualmente
Se non hai accesso SSH basato su password disponibile sul tuo server, dovrai completare manualmente il processo sopra indicato.
Aggiorneremo manualmente il contenuto del tuo file id_rsa.pub
nel file ~/.ssh/authorized_keys
sulla tua macchina remota.
Per visualizzare il contenuto della tua chiave id_rsa.pub
, digita questo sul tuo computer locale:
- cat ~/.ssh/id_rsa.pub
Vedrai il contenuto della chiave, che dovrebbe assomigliare a qualcosa del genere:
Outputssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCqql6MzstZYh1TmWWv11q5O3pISj2ZFl9HgH1JLknLLx44+tXfJ7mIrKNxOOwxIxvcBF8PXSYvobFYEZjGIVCEAjrUzLiIxbyCoxVyle7Q+bqgZ8SeeM8wzytsY+dVGcBxF6N4JS+zVk5eMcV385gG3Y6ON3EG112n6d+SMXY0OEBIcO6x+PnUSGHrSgpBgX7Ks1r7xqFa7heJLLt2wWwkARptX7udSq05paBhcpB0pHtA1Rfz3K2B+ZVIpSDfki9UVKzT8JUmwW6NNzSgxUfQHGwnW7kj4jp4AT0VZk3ADw497M2G/12N0PPB5CnhHf7ovgy6nL1ikrygTKRFmNZISvAcywB9GVqNAVE+ZHDSCuURNsAInVzgYo9xgJDW8wUw2o8U77+xiFxgI5QSZX3Iq7YLMgeksaO4rBJEa54k8m5wEiEE1nUhLuJ0X/vh2xPff6SQ1BL/zkOhvJCACK6Vb15mDOeCSq54Cr7kvS46itMosi/uS66+PujOO+xt/2FWYepz6ZlN70bRly57Q06J+ZJoc9FfBCbCyYH7U/ASsmY095ywPsBo1XQ9PqhnN1/YOorJ068foQDNVpm146mUpILVxmq41Cj55YKHEazXGsdBIbXWhcrRf4G2fJLRcGUr9q8/lERo9oxRm5JFX6TCmj6kmiFqv+Ow9gI0x8GvaQ== sammy@host
Accedi al tuo host remoto utilizzando il metodo disponibile.
Una volta che hai accesso al tuo account sul server remoto, assicurati che la directory ~/.ssh
esista. Questo comando creerà la directory se necessario, o non farà nulla se esiste già:
- mkdir -p ~/.ssh
Ora puoi creare o modificare il file authorized_keys
all’interno di questa directory. Puoi aggiungere il contenuto del tuo file id_rsa.pub
alla fine del file authorized_keys
, creandolo se necessario, utilizzando questo comando:
- echo public_key_string >> ~/.ssh/authorized_keys
Nel comando sopra, sostituisci il public_key_string
con l’output del comando cat ~/.ssh/id_rsa.pub
che hai eseguito sul tuo sistema locale. Dovrebbe iniziare con ssh-rsa AAAA...
.
Infine, ci assicureremo che la directory ~/.ssh
e il file authorized_keys
abbiano i permessi appropriati impostati:
- chmod -R go= ~/.ssh
Questo rimuove in modo ricorsivo tutti i permessi “group” e “other” per la directory ~/.ssh/
.
Se stai utilizzando l’account root
per impostare le chiavi per un account utente, è anche importante che la directory ~/.ssh
appartenga all’utente e non a root
:
- chown -R sammy:sammy ~/.ssh
In questo tutorial il nostro utente è chiamato sammy ma dovresti sostituire il nome utente appropriato nel comando sopra.
Ora possiamo tentare l’autenticazione basata su chiave con il nostro server Rocky Linux.
Passo 3 — Accesso al tuo server Rocky Linux utilizzando le chiavi SSH
Se hai completato con successo una delle procedure sopra, ora dovresti essere in grado di accedere all’host remoto senza la password dell’account remoto.
Il processo iniziale è lo stesso della modalità di autenticazione basata su password:
- ssh username@remote_host
Se è la prima volta che ti connetti a questo host (se hai usato il metodo precedente), potresti vedere qualcosa del genere:
OutputThe authenticity of host '203.0.113.1 (203.0.113.1)' can't be established.
ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.
Are you sure you want to continue connecting (yes/no)? yes
Questo significa che il tuo computer locale non riconosce l’host remoto. Digita sì
e poi premi INVIO
per continuare.
Se non hai fornito una frase di accesso quando hai creato la tua coppia di chiavi nel passaggio 1, verrai immediatamente autenticato. Se hai fornito una frase di accesso, ti verrà chiesto di inserirla ora. Dopo l’autenticazione, dovrebbe aprirsi una nuova sessione shell per te con l’account configurato sul server Rocky Linux.
Se l’autenticazione basata su chiave è stata completata con successo, continua a imparare come proteggere ulteriormente il tuo sistema disabilitando l’autenticazione basata su password del server SSH.
Passaggio 4 — Disabilitare l’Autenticazione basata su Password sul tuo Server
Se sei riuscito ad accedere al tuo account utilizzando SSH senza una password, hai configurato con successo l’autenticazione basata su chiavi SSH per il tuo account. Tuttavia, il meccanismo di autenticazione basato su password è ancora attivo, il che significa che il tuo server è ancora esposto a attacchi di forza bruta.
Prima di completare i passaggi in questa sezione, assicurati di avere configurata l’autenticazione basata su chiave SSH per l’account root su questo server, o preferibilmente, che tu abbia configurata l’autenticazione basata su chiave SSH per un account non-root su questo server con privilegi sudo
. Questo passaggio bloccherà gli accessi basati su password, quindi è cruciale assicurarsi di poter comunque ottenere accesso amministrativo.
Una volta confermato che il tuo account remoto abbia privilegi amministrativi, accedi al tuo server remoto con le chiavi SSH, sia come root o con un account con privilegi sudo
. Quindi, apri il file di configurazione del demone SSH:
- sudo vi /etc/ssh/sshd_config
All’interno del file, cerca una direttiva chiamata PasswordAuthentication
. Questa potrebbe essere commentata con un hash #
. Premi i
per mettere vi
in modalità di inserimento, quindi rimuovi il commento alla riga e imposta il valore su no
. Questo disabiliterà la possibilità di accedere via SSH usando le password dell’account:
...
PasswordAuthentication no
...
Quando hai finito di apportare modifiche, premi ESC
e poi :wq
per scrivere le modifiche nel file e uscire. Per implementare effettivamente queste modifiche, è necessario riavviare il servizio sshd
:
- sudo systemctl restart sshd
Come precauzione, apri una nuova finestra del terminale e verifica che il servizio SSH funzioni correttamente prima di chiudere la sessione corrente:
- ssh username@remote_host
Una volta verificato che il servizio SSH funzioni correttamente, puoi chiudere in modo sicuro tutte le sessioni attuali del server.
Il demone SSH sul tuo server Rocky Linux risponde ora solo alle chiavi SSH. L’autenticazione basata su password è stata disabilitata con successo.
Conclusione
Ora dovresti avere configurata l’autenticazione basata su chiave SSH sul tuo server, permettendoti di accedere senza fornire una password dell’account.
Se desideri saperne di più su come lavorare con SSH, dai un’occhiata alla nostra Guida Essenziale a SSH.
Source:
https://www.digitalocean.com/community/tutorials/how-to-set-up-ssh-keys-on-rocky-linux-9