Se hai mai lavorato come amministratore di sistema (o lo desideri in futuro), hai bisogno di una buona conoscenza di SSH. Non ti illustrerò il concetto generale poiché è già stato illustrato qui su Enable Sysadmin. Tuttavia, voglio esaminare un modo potenzialmente migliore per usarlo. SSH è il protocollo di accesso remoto più utilizzato al mondo. Pertanto, ha senso cercare di migliorarne il più possibile l'utilizzo.
Ho usato SSH per connettermi in remoto a migliaia di macchine dei clienti durante il mio periodo come ingegnere di supporto e sono sicuro che altri hanno avuto un'esperienza simile. Con l'autenticazione SSH tradizionale, hai bisogno del nome utente e della password dell'account a cui desideri accedere ogni volta che desideri accedere a un sistema. Non suona così male, vero? Ma cosa succede quando è necessario passare regolarmente da un sistema all'altro? O se le tue responsabilità includessero sessioni remote sugli stessi 100 sistemi durante il giorno per i controlli sanitari? C'è un altro modo per eseguire l'accesso e, con un piccolo investimento iniziale, può essere molto più efficiente nel complesso.
Indurimento del processo
È oggettivamente vero che una chiave crittografata è un obiettivo molto più difficile di un nome utente e una password per chi ha cattive intenzioni. Anche se può richiedere un po' di apprendimento, la creazione e l'utilizzo dell'autenticazione basata su chiave SSH vale l'investimento per ogni amministratore di sistema.
Ecco come funziona. Generi una chiave pubblica e una chiave privata corrispondente. Il file della chiave privata funge da password e dovrebbe essere tenuto al sicuro. Tuttavia, la chiave pubblica viene copiata sui sistemi di destinazione a cui ci si connette regolarmente. Metti la chiave pubblica nella directory home del tuo account sul server di destinazione. Quando tenti di accedere, le chiavi vengono verificate e l'accesso viene concesso.
Ora, ci sono due modi per farlo. Uno è più conveniente e l'altro è un po' noioso ma con una protezione aggiuntiva per te. Il modo conveniente è non specificare una password insieme alla chiave privata. Il risultato è che non è necessario inserire una password quando si utilizza la chiave privata per l'autenticazione. Ciò significa che se qualcuno mette le mani sulla tua chiave privata, può usarla anche per autenticarsi. L'altro metodo consiste nel proteggere con password la tua chiave privata in modo che ti venga richiesta la password durante l'autenticazione (pensa all'autenticazione a due fattori utilizzando sia la chiave privata che la password).
ssh-keygen senza password
Per generare una coppia di chiavi SSH, utilizzare il comando seguente:
[user@host ~]$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa): Enter
Created directory '/home/user/.ssh'.
Enter passphrase (empty for no passphrase): Enter
Enter same passphrase again: Enter
Your identification has been saved in /home/user/.ssh/id_rsa.
Your public key has been saved in /home/user/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:veutUNPio3QDCyvkYm1oIx35hmMrHpPKWFdIYu3HV+w [email protected]
The key's randomart image is:
+---[RSA 2048]----+
| |
| . . |
| o o o |
| . = o o . |
| o + = S E . |
| ..O o + * + |
|.+% O . + B . |
|=*oO . . + * |
|++. . +. |
+----[SHA256]-----+
Per impostazione predefinita, le tue chiavi private e pubbliche vengono salvate nel tuo ~/.ssh/id_rsa
e ~/.ssh/id_rsa.pub
file, rispettivamente.
ssh-keygen con una password
La creazione di una chiave protetta da password è simile a questa:
[user@host ~]$ ssh-keygen -f .ssh/key-with-password
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in .ssh/key-with-password.
Your public key has been saved in .ssh/key-with-password.pub.
The key fingerprint is:
SHA256:s7GGB7EyHUry4aOcNPKmhNKS7dl1YsMVLvFZJ77VxAo [email protected]
The key's randomart image is:
+---[RSA 2048]----+
| . + =.o ... |
| = B XEo o. |
| . o O X =.... |
| = = = B = o. |
|= + * * S . |
|.+ = o + . |
| + . |
| |
| |
+----[SHA256]-----+
Usa il -f
opzione per specificare il file in cui verranno salvate le chiavi. Nell'esempio sopra, le chiavi private e pubbliche sono memorizzate in /home/user/.ssh/key-with-pass
e /home/user/.ssh/key-with-pass.pub
file, rispettivamente.
Avviso
Durante l'ulteriore generazione di coppie di chiavi SSH, se non specifichi un nome file univoco, ti viene richiesta l'autorizzazione per sovrascrivere l'id_rsa
esistente e id_rsa.pub
File. Se sovrascrivi il id_rsa
esistente e id_rsa.pub
file, devi quindi sostituire la vecchia chiave pubblica con quella nuova su TUTTI dei server SSH che hanno la tua vecchia chiave pubblica.
Una volta generate le chiavi, queste vengono memorizzate nel /user/home/.ssh/
directory con i seguenti permessi:
- Chiave privata - 600
- Chiave pubblica - 644
Non hai ancora finito. Diamo un'occhiata al passaggio finale dell'autenticazione basata su chiave SSH riuscita.
Condivisione delle chiavi
Affinché tutto ciò funzioni, è necessario condividere la chiave pubblica con le macchine remote su cui si sta tentando di eseguire l'SSH. Usa ssh-copy-id
comando per copiare la chiave pubblica nel sistema di destinazione. Per impostazione predefinita, il percorso del file è /home/user/.ssh/id_rsa.pub
. Emetti il comando, specifichi il file che stai condividendo, quindi l'utente/host con cui lo stiamo condividendo. Dovrebbe assomigliare a questo:
[user@host ~] $ ssh-copy-id -i .ssh/key-with-pass.pub user@destination
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/user/.ssh/id_rsa.pub"
/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
user@destination password: changeme
Number of key(s) added: 1
Ora che hai condiviso la chiave pubblica con l'host di destinazione, puoi autenticarti sul server remoto passando la chiave privata corrispondente. Se hai specificato un percorso file per la tua chiave privata, devi inserirlo qui. In caso contrario, il valore predefinito è /home/_user_/.ssh/id_rsa
.
Visto qui:
[user@host ~]$ ssh -i .ssh/key-with-password user@desination
Enter passphrase for key '.ssh/key-with-password' : password here if you set one
[user@destination ~] $
Vantaggi e riepilogo
I vantaggi dell'utilizzo dell'autenticazione basata su chiave SSH sono evidenti. Le password vengono rubate ogni giorno, principalmente a causa di un errore umano, ma anche per l'abilità e la determinazione dell'attaccante. Una chiave crittografata e, più specificamente, una chiave crittografata protetta da password, rende la tua autenticazione SSH ancora più difficile da attaccare. Devi comunque trovare un equilibrio tra disponibilità e sicurezza, ma questo viene gestito in modo diverso in ogni ambiente.
[ Corso online gratuito:panoramica tecnica di Red Hat Enterprise Linux. ]