Introduzione
La gestione delle chiave pubbliche e private è oggetto di confusione in molte circostanze, e ciò è determinato da scenari a volte imprevedibile, altre scarsamente documentati. In moltissimi casi pratici, infatti, le policy di sicurezza di uno specifico ambiente (una droplet, una VPS, ecc.) non permettono di effettuare il cambio di una chiave SSH, anche perchè questa possibilità minerebbe la sicurezza del sistema (chiunque potrebbe cambiarla o impossessarsi della chiave stessa). E se uno avesse bisogno di cambiare quella chiave, come si fa?
Motivo per cui se, ad esempio, avete impostato un accesso alla droplet da terminale via terminale SSH e chiave pubblica / privata, se accedete con un computer (ad esempio A, quello dell’ufficio) su cui avete impostato la crittografia asimmetrica, se decidete di accedere alla droplet con un altro vostro computer (B, quello di casa) non sarà possibile accedere anche se aggiungerete la chiave dal pannello di controllo della VPS.
Che cosa indica l’errore Permission denied (publickey).
L’errore tipico in questi casi, è della serie:
Permission denied (publickey).
che è un errore indicativo fino ad un certo punto, alla fine. Molti sistemisti vanno in crisi a fronte di questo errore, perchè non da’ molti altri punti di riferimento ed indica, semplicemente, che non è possibile accedere al sistema remoto usando quel tipo di chiave. La chiave non viene riconosciuta, e tanto basta: non sappiamo altro, dobbiamo prenderne atto e capire se non sia questa la casistica che vi interessa.
Se proviamo ad accedere col il computer A alla VPS e ci riusciamo, mentre con B non ci riusciamo, è il caso di leggere quanto segue. Il motivo insito dietro al problema, in molti casi, è determinato da quello che dicevamo all’inizio: se una droplet è configurata su una coppia di chiavi (K1, K2) e proviamo ad accedere con qualsiasi altra chiave (K3, K4) diverse dalle precedenti, non sarà possibile accedere al server remoto se non agendo su quest’ultimo, ovvero effettuando l’aggiornamento della chiave pubblica ammissibile.
All’interno del file sul server remoto (VPS, droplet, …), in quasi ogni ambiente Linux, troveremo infatti nella cartella ~/.ssh/ il file authorized_keys, ovvero:
~/.ssh/authorized_keys
il quale conterrà l’elenco di chiavi pubbliche ammesse (nello specifico, quella del computer A). Quello che andremo a fare sarà, pertanto, aggiornare la chiave pubblica ammissibile sul server mettendoci in coda, come nuova riga, quella del computer B. Chiarito questo, andiamo a vedere la procedura passo-passo per aggiornare la chiave, invitandovi a seguire con attenzione la stessa senza trovare vie di mezzo o tricks improbabili, anche perchè è bene ricordare che la teoria suggerisce le seguenti cose:
- la coppia di chiavi (K1, K2) funzionerà solo sul computer A;
- la coppia di chiavi (K3, K4) funzionerà solo sul computer B;
- la combinazione di chiavi (K1, K3) NON FUNZIONA nè sul computer A nè sul computer B;
- la combinazione di chiavi (K3, K2) NON FUNZIONA nè sul computer A nè sul computer B.
Come aggiungere una chiave pubblica ad una VPS per un nuovo computer (B)
Collegate computer A e computer B ad uno stesso account Dropbox, per praticità (opzionale ma molto pratico per consentire il copia incolla tra due computer diversi), e poi seguite i seguenti passi. Per fissare le idee, A contiene già la coppia di chiavi funzionante sulla droplet, mentre B invece no. Cosa facciamo è subito detto.
Generare una coppia di chiavi pubblica, privata
usiamo ssh-keygen da terminale, in locale, sul computer B, per generare una nuova chiave di accesso. Abbiate cura di inserire una passphrase che sia facile da ricordare, altrimenti se la dimenticate dovrete ripetere da qui in poi la procedura stessa.
Nota. Queste istruzioni valgono in ambiente nativo, senza dover installare nulla, su Linux e Mac, ma anche su Windows dopo aver installato PuTTY.
Aprite una finestra del terminale sul computer sul quale dovete ottenere l’accesso con chiave (B), e scrivete:
ssh-keygen
-
id_rsa
che sarà la chiave privata id_rsa.pub
che sarà la chiave pubblica
Prendere nota della chiave pubblica
Scrivete da terminale di comando:
cat ~/.ssh/id_rsa.pub
e copiate il risultato da terminale, sempre sul computer B, all’interno di un file di testo. Salvate il file di testo su Dropbox, in modo che dall’altra parte (A) sia sincronizzato a stretto giro (il file sarà chiave.txt, e dovrà essere cancellato alla fine delle operazioni). Passate, finalmente, al computer A, in modo da avere accesso sicuro alla droplet come sempre fate, ad esempio con ssh root@IP_ADDRESS.
Copia-incollare la chiave pubblica sulla droplet
Aprite una finestra del terminale di comando su A, e accedete alla droplet o VPS: quello che dovrete fare, a questo punto, è accedere al file delle chiavi autorizzate (authorized_keys) e incollare come ultima riga il contenuto del file copia-incollato chiave.txt.
Per intenderci:
ssh root@IP_VPS_O_DROPLET
una volta dentro, scrivete:
pico ~/.ssh/authorized_keys
e vedrete una prima riga con la chiave già salvata, andate a capo e mettete in coda al file il contenuto di chiave.txt. Aggiornamento eseguito una volta che digitate CTRL O e salvate, ovviamente.
Se adesso andate sul computer B, dovreste poter accedere alla droplet digitando anche qui:
ssh root@IP_VPS_O_DROPLET
Per sicurezza, dopo aver finitol ricordatevi di cancellare il file chiave.txt o di toglierlo dalla condivisione.
Da non perdere 👇👇👇
- 🔒 Conosci meglio privacy e diritti digitali
- 👩💻 Impara a programmare in Python, C++, PHP
- 💻 Configura hosting e domini
- 📊 Tutto sui database
- 🛠️ Approfondisci le nuove tecnologie
- 🎮 Esplora la sezione retrogame
- 👀 Guarda i migliori servizi in offerta
- 🏁 Usa al meglio Excel
- 💬 Il nostro canale Telegram: iscriviti
- 🧐 Guida: come usare le macro in Excel (con esempi)
- 😬 Come si calcola la probabilità (metodo generale)
- 🤩 Rischi associati all’acquisto e riuso di domini “usati”