SSH su un server Linux
SSH, noto anche come secure shell, è un protocollo che può essere utilizzato per connettersi e comunicare con un server. Puoi connetterti al tuo server Linux per una sessione di terminale utilizzando questo protocollo crittografato. Se utilizzi un server OpenSSH, ci sono principalmente due modi diversi per procedere con il processo di autenticazione. Il primo è la classica autenticazione basata su password. In questo caso, utilizzi semplicemente le tue credenziali di nome utente e password per accedere al tuo account. L'altro modo consiste nel configurare il server Linux per l'autenticazione basata su chiavi SSH.
In questa guida ci concentreremo su come configurare il server Linux per utilizzare le chiavi SSH come mezzo principale di autenticazione. Discuteremo anche del perché le chiavi SSH siano spesso preferite al consueto meccanismo di protezione tramite password.
Cosa sono le chiavi SSH?
Le chiavi SSH sono simili alle credenziali che utilizzeresti per accedere al tuo account sul server. Invece di inserire nome utente e password, utilizzi la coppia di chiavi SSH, che è anch'essa una credenziale di accesso. Sebbene le chiavi siano crittografiche, devi trattarle come credenziali di autenticazione poiché questo è lo scopo a cui servono.
Una tipica chiave SSH ha due parti: una chiave autorizzata e una chiave di identità. La chiave autorizzata è la chiave pubblica che funziona in combinazione con la tua chiave di identità privata per consentirti l'accesso all'account. La chiave pubblica si trova sul server remoto a cui desideri accedere tramite SSH e rimane nel file ~/.ssh/authorized_keys associato al tuo account utente. Le chiavi di identità servono a verificare la tua identità come utente corretto per garantire che solo il personale autorizzato possa accedere all'account specificato. Collettivamente, queste chiavi sono chiamate chiavi utente in quanto autenticano l'identità dell'utente. Una volta che il server è in grado di verificare entrambe le chiavi, viene avviata una sessione di shell per eseguire i tuoi comandi.
Esistono anche le chiavi host e le chiavi di sessione. Il protocollo autentica il computer locale, il sistema o il server utilizzando la chiave host. Le chiavi di sessione aiutano a crittografare il flusso di dati sulla connessione. Ciò rende la sessione e l'attività corrispondente molto più sicure e protette.
Chiavi SSH rispetto alla protezione tramite password
Il motivo principale per cui l'autenticazione basata su chiavi SSH è preferibile alla protezione tramite password è che quest'ultima può lasciarti vulnerabile agli attacchi informatici. La maggior parte delle persone non utilizza password estremamente complesse per poterle ricordare quando deve effettuare l'accesso. Di conseguenza, ciò crea un'area di vulnerabilità. Molti aggressori utilizzano la forza bruta per violare password relativamente semplici e penetrare nell'account. Questo è diventato particolarmente facile al giorno d'oggi a causa dell'automazione e delle tecnologie di hacking avanzate.
Le chiavi SSH, d'altra parte, offrono un modo molto più sicuro per accedere al tuo account. Come abbiamo accennato in precedenza, questo metodo utilizza una chiave pubblica e una chiave privata per autenticare l'identità di un client. Sebbene tu possa condividere la chiave pubblica con chiunque, devi mantenere segreta la chiave privata. Quando sono accoppiate, la chiave pubblica decrittografa quella privata per autenticare la tua identità. Inoltre, puoi stratificare la protezione aggiungendo una passphrase sopra la coppia di chiavi. Parleremo più approfonditamente della passphrase più avanti nella guida. Tuttavia, anche senza la passphrase, la tua chiave SSH privata è conservata in modo estremamente sicuro sul tuo computer locale. La rete non è mai in grado di accedere direttamente alla chiave, che si trova in una directory riservata ed è integrata con permessi limitati.
Generazione delle chiavi SSH
Per generare la tua coppia di chiavi SSH, devi scorrere la suite di strumenti OpenSSH e individuare ssh-keygen. Questo è uno speciale strumento di utilità che ti consente di generare una coppia di chiavi SSH di circa 2048 bit. Inizia eseguendo questo comando:
|
1 |
ssh-keygen |
Questo mostrerà il seguente messaggio:
|
1 2 |
Generazione pubblica/privata rsa chiave coppia. Inserisci file in cui per salvare la chiave (/home/username/.ssh/id_rsa): |
Il messaggio genererà una chiave privata denominata id_rsa e una chiave pubblica denominata id_rsa.pub. A questo punto, puoi scegliere dove desideri posizionare la chiave. Ti consigliamo di mantenere la posizione predefinita premendo Invio. Mantenere la posizione predefinita assicura che il server individui e verifichi automaticamente le chiavi ogni volta che accedi utilizzando quel sistema. La posizione predefinita è la directory ~/.ssh nella directory home. Se preferisci selezionare un percorso diverso, digita la posizione.
Riscrittura di chiavi SSH più vecchie
È importante notare che puoi avere solo una coppia di chiavi SSH alla volta sul tuo sistema. Ciò significa che se hai precedentemente generato e salvato una coppia di chiavi sul sistema, vedrai il seguente messaggio:
|
1 2 |
/home/username/.ssh/id_rsa esiste già. Sovrascrivere (s/n)? |
Per continuare a creare e salvare la tua nuova coppia di chiavi SSH, devi eliminare quella esistente. Ricorda: se sovrascrivi la chiave già salvata sul disco, non potrai più utilizzarla per scopi di autenticazione. Questo è un processo irreversibile, quindi assicurati di essere assolutamente sicuro di voler sovrascrivere la vecchia coppia di chiavi.
Impostazione di una Passphrase
Una volta configurate le chiavi nella directory, ti verrà chiesto se desideri fornire una passphrase:
|
1 2 3 |
Creata directory '/home/username/.ssh'. Inserisci passphrase (vuota per nessuna passphrase): Inserisci stessa passphrase nuovamente: |
La passphrase è facoltativa: puoi scegliere di saltarla. Tuttavia, aggiunge un ulteriore livello di sicurezza per la tua chiave privata crittografandola sul disco. Se scegli di utilizzare una passphrase, dovrai inserirla correttamente ogni volta che tenti di accedere utilizzando questa coppia di chiavi SSH:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
La tua identificazione è stata salvata in /home/username/.ssh/id_rsa. La tua chiave pubblica è stata salvata in /home/username/.ssh/id_rsa.pub. L'impronta digitale della chiave è: a9:49:2e:2a:5e:33:3e:a9:de:4e:77:11:58:b6:90:26 username@remote_host L'immagine 'randomart della chiave è: +--[ RSA 2048]----+ | ..o | | E o= . | | o. o | | .. | | ..S | | o o. | | =o.+. | |. =++.. | |o=++. | +-----------------+ |
Finalmente, ora dovresti avere le tue chiavi SSH che puoi utilizzare per autenticare il client.
Incorporare la tua chiave SSH nel tuo account server
Prima di utilizzare le chiavi per l'autenticazione, devi incorporare la chiave pubblica sul server Linux remoto. Successivamente, ti mostreremo come farlo durante la creazione del tuo server CloudSigma. Innanzitutto, devi trovare la tua chiave SSH pubblica in modo da poterla copiare e incollare. Se hai utilizzato il metodo sopra indicato per generare la tua coppia di chiavi SSH, puoi trovare quella pubblica digitando quanto segue:
|
1 |
cat ~/.ssh/id_rsa.pub |
Questo farà apparire la chiave SSH pubblica in questo modo:
|
1 |
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDNqqi1mHLnryb1FdbePrSZQdmXRZxGZbo0gTfglysq6KMNUNY2VhzmYN9JYW39yNtjhVxqfW6ewc+eHiL+IRRM1P5ecDAaL3V0ou6ecSurU+t9DR4114mzNJ5SqNxMgiJzbXdhR+j55GjfXdk0FyzxM3a5qpVcGZEXiAzGzhHytUV51+YGnuLGaZ37nebh3UlYC+KJev4MYIVww0tWmY+9GniRSQlgLLUQZ+FcBUjaqhwqVqsHe4F/woW1IHe7mfm63GXyBavVc+llrEzRbMO111MogZUcoWDI9w7UIm8ZOTnhJsk7jhJzG2GpSXZHmly/a/buFaaFnmfZ4MYPkgJD username@example.com |
Copia questo valore per usarlo in seguito. Quando crei un server con CloudSigma, hai l'opzione di aggiungere una chiave SSH dopo aver selezionato le dimensioni del server e l'immagine del sistema operativo:

Fai clic su Aggiungi e incolla ciò che hai copiato per incorporare la chiave SSH nel tuo server. Di conseguenza, ogni volta che avvierai il server, questo disporrà già della chiave SSH inserita.
Copiare una chiave pubblica su un server esistente
Mentre il metodo sopra descritto funziona quando si crea un nuovo server, è possibile incorporare una chiave SSH in un server esistente? La risposta è sì e ci sono diversi modi per farlo, a seconda degli strumenti a tua disposizione.
Utilizzo di SSH-Copy-ID
Questo è il modo più semplice e immediato per copiare una chiave pubblica. Tutto ciò di cui hai bisogno è lo strumento di utilità ssh-copy-id che troverai nella suite OpenSSH standard. Ma prima di utilizzare questo metodo, assicurati che l'autenticazione basata su password sia attivata sul tuo server. Per copiare la chiave, applicherai la sintassi ssh-copy-id e poi inserirai l'host remoto a cui desideri connetterti. Dovrai anche specificare l'account a cui ti stai connettendo. È necessario disporre di un accesso basato su password all'account, in modo che la chiave venga copiata nella posizione corretta. Il comando dovrebbe apparire così:
|
1 |
ssh-copy-id username@remote_host |
Questo potrebbe far apparire sullo schermo un messaggio simile al seguente:
|
1 2 3 |
L'autenticità di host '111.111.11.111 (111.111.11.111)' può't essere stabilita. ECDSA chiave impronta è fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe. Sei sicuro di voler continuare a connetterti connessione (sì/no)? sì |
Questo accade in genere se è la prima volta che ti connetti a quel particolare host remoto. Significa semplicemente che il computer non è riuscito a riconoscere l'host. Tutto ciò che devi fare è digitare 'yes' e premere Invio. Una volta fatto questo, lo strumento eseguirà la scansione dell'account per trovare la tua chiave pubblica. Dopo averla individuata, ti chiederà di inserire la password del tuo account:
|
1 2 3 |
/usr/bin/ssh-copy-id: INFO: tentativo di accesso in con le nuove chiavi(s), per filtrare fuori quelle che sono già installate /usr/bin/ssh-copy-id: INFO: 1 chiave(s) rimane da essere installata -- se ti viene richiesto ora è per installare le nuove nuove chiavi username@111.111.11.111's password: |
Successivamente, puoi inserire la tua password. Quando sarai connesso al tuo account, lo strumento copierà il contenuto della chiave ~/.ssh/id_rsa.pub e lo incollerà sotto authorized_keys nella directory ~/.ssh del tuo account remoto. Vedrai quindi il seguente messaggio:
|
1 2 3 |
Numero di chiavi(s) aggiunte: 1 Ora prova ad accedere nella macchinamacchina, con: "ssh 'username@111.111.11.111'" e controlla per assicurarti che solo le chiavi chiavi(s) che volevi siano state aggiunte. |
Questo significa che hai copiato con successo la tua chiave pubblica sul tuo server remoto esistente.
Utilizzo di SSH
Questo è un metodo piuttosto convenzionale per copiare la tua chiave pubblica su un server. È preferibile utilizzarlo se non hai accesso allo strumento ssh-copy-id. Anche in questo caso, è necessario disporre di un accesso basato su password al proprio account. Ciò che stai essenzialmente facendo è mostrare il contenuto della chiave pubblica come output sul tuo computer e trasferirlo al server remoto tramite la connessione SSH stabilita tra di essi. Il comando da utilizzare a questo scopo dovrebbe essere il seguente:
|
1 |
cat ~/.ssh/id_rsa.pub | ssh username@remote_host "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys" |
Come puoi vedere, abbiamo specificato che la chiave deve essere inserita nel file authorized_keys all'interno della directory ~/.ssh sul server. L'uso del simbolo >> garantisce inoltre che stiamo aggiungendo chiavi invece di sovrascriverle. Dopo aver eseguito il comando, potresti vedere questo messaggio:
|
1 2 3 |
L' autenticità di host '111.111.11.111 (111.111.11.111)' non'può essere stabilita. ECDSA chiave impronta è fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe. Sei sicuro di voler continuare la connessione connessione (yes/no)? yes |
Analogamente al messaggio precedente, questo significa che il computer non ha riconosciuto l'host remoto. Digita 'yes' e premi Invio per procedere. Ora dovrai inserire la password dell'account:
|
1 |
username@111.111.11.111'di password: |
Una volta verificata la password, la chiave verrà copiata in un file nel tuo account utente come specificato.
Manualmente
Nel caso in cui tu non abbia un accesso basato su password al tuo account sul server remoto, puoi copiare la chiave pubblica manualmente. L'obiettivo è inserire il valore del file id_rsa.pub nel file ~/.ssh/authorized_keys sul tuo dispositivo remoto. Come già sappiamo, possiamo visualizzare il valore della chiave id_rsa.pub utilizzando questo comando:
|
1 |
cat ~/.ssh/id_rsa.pub |
Il contenuto della tua chiave pubblica SSH apparirà così:
|
1 |
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCqql6MzstZYh1TmWWv11q5O3pISj2ZFl9HgH1JLknLLx44+tXfJ7mIrKNxOOwxIxvcBF8PXSYvobFYEZjGIVCEAjrUzLiIxbyCoxVyle7Q+bqgZ8SeeM8wzytsY+dVGcBxF6N4JS+zVk5eMcV385gG3Y6ON3EG112n6d+SMXY0OEBIcO6x+PnUSGHrSgpBgX7Ks1r7xqFa7heJLLt2wWwkARptX7udSq05paBhcpB0pHtA1Rfz3K2B+ZVIpSDfki9UVKzT8JUmwW6NNzSgxUfQHGwnW7kj4jp4AT0VZk3ADw497M2G/12N0PPB5CnhHf7ovgy6nL1ikrygTKRFmNZISvAcywB9GVqNAVE+ZHDSCuURNsAInVzgYo9xgJDW8wUw2o8U77+xiFxgI5QSZX3Iq7YLMgeksaO4rBJEa54k8m5wEiEE1nUhLuJ0X/vh2xPff6SQ1BL/zkOhvJCACK6Vb15mDOeCSq54Cr7kvS46itMosi/uS66+PujOO+xt/2FWYepz6ZlN70bRly57Q06J+ZJoc9FfBCbCyYH7U/ASsmY095ywPsBo1XQ9PqhnN1/YOorJ068foQDNVpm146mUpILVxmq41Cj55YKHEazXGsdBIbXWhcrRf4G2fJLRcGUr9q8/lERo9oxRm5JFX6TCmj6kmiFqv+Ow9gI0x8GvaQ== demo@test |
Successivamente, devi accedere al tuo account sull'host remoto con qualsiasi mezzo disponibile. Una volta effettuato l'accesso, verifica che la directory ~/.ssh sia presente. In caso contrario, puoi eseguire il seguente comando per crearla:
|
1 |
mkdir -p ~/.ssh |
Ora puoi usare questo comando per aggiungere il contenuto del file id_rsa.pub al file authorized_keys in questa directory ~/.ssh sul server remoto:
|
1 |
echo public_key_string >> ~/.ssh/authorized_keys |
Invece di digitare 'public_key_string' in questo comando, dovrai inserire il contenuto della chiave che hai estratto precedentemente eseguendo il comando cat ~/.ssh/id_rsa.pub.
Autenticazione con la tua chiave SSH
Ora puoi accedere facilmente al tuo account utilizzando solo le tue chiavi SSH. Ciò significa che non hai più bisogno della password per accedere al tuo account sul server. Utilizzerai le credenziali che usi abitualmente per l'accesso:
|
1 |
ssh username@remote_host |
Questo potrebbe far apparire il seguente messaggio:
|
1 2 3 |
L'autenticità dell'host '111.111.11.111 (111.111.11.111)' non 'può essere stabilita. ECDSA chiave impronta digitale è fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe. Sei sicuro di voler continuare a connetterti connecting (yes/no)? yes |
Non preoccuparti se vedi questo messaggio. Significa semplicemente che il sistema locale non è in grado di riconoscere l'host remoto. Questo di solito accade se ti connetti all'host per la prima volta. Tutto ciò che devi fare è digitare 'yes' e premere Invio. Tornando ad alcuni dei passaggi precedenti, se hai applicato una passphrase, è qui che dovrai inserirla. In caso contrario, accederai direttamente al tuo account dopo che le chiavi SSH saranno state autenticate. Questo avvierà l'apertura di una nuova sessione di shell tramite il tuo account corrente sul computer locale.
Come disabilitare l'autenticazione tramite password sul tuo server?
Ora che sai come configurare le tue chiavi SSH, devi disabilitare l'autenticazione tramite password. Anche se sei in grado di utilizzare le chiavi SSH per l'autenticazione, sei comunque vulnerabile agli attacchi brute force se il processo di autenticazione tramite password è attivo. Prima di disabilitare il meccanismo di autenticazione tramite password, assicurati che la configurazione dell'autenticazione basata su chiavi SSH sia dell'account root sul server o che l'account configurato abbia l'accesso sudo. Il motivo per confermare questo è assicurarsi di mantenere l'accesso amministrativo all'account anche quando le password sono disabilitate. Ora puoi usare questa chiave SSH per accedere al tuo account server. Il passo successivo consiste nell'aprire il file di configurazione del demone SSH:
|
1 |
sudo nano /etc/ssh/sshd_config |
Qui, devi cercare la seguente direttiva:
|
1 |
PasswordAuthentication |
Devi decommentare questa riga e cambiare il valore in 'no', come segue:
|
1 |
PasswordAuthentication no |
In questo modo disabiliterai l'autenticazione basata su password. Salva semplicemente il file e chiudilo quando hai finito. Infine, devi riavviare il dispositivo per applicare le modifiche. Se utilizzi un dispositivo Ubuntu o Debian, puoi anche usare il seguente comando per disabilitare l'accesso basato su password:
|
1 |
sudo service ssh restart |
Per assicurarti che il tuo demone, o sshd, consenta solo l'autenticazione basata su SSH sul server su macchine CentOS o Fedora, usa il comando:
|
1 |
sudo service sshd restart |
Conclusione
Una volta completati tutti questi passaggi, dovresti avere l'autenticazione basata su chiavi SSH configurata e funzionante sul tuo server. Ora puoi stare tranquillo che i tuoi server sono sicuri e protetti!
Buon computing!
Commenti
Ancora nessun commento. Scrivi il primo.