Come aggiungere una chiave pubblica ad una VPS per evitare l’errore “Permission denied (publickey)”

Aggiornato il: 24-12-2022 10:56





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.

Premessa: cosa c’è nel file authorized_keys

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
(/Users/NOMEUTENTE/.ssh/id_rsa è la chiave di default) e scelta / confermata la passphrase per la chiave, saranno stati generati i due punti di partenza della procedura:
  •  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 [email protected]_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 [email protected]_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 [email protected]_VPS_O_DROPLET

Per sicurezza, dopo aver finitol ricordatevi di cancellare il file chiave.txt o di toglierlo dalla condivisione.



Questo blog pubblica contenuti ed offre servizi free da 11 anni. – Leggi un altro articolo a caso – Per informazioni contattaci
Non ha ancora votato nessuno.

Ti sembra utile o interessante? Vota e fammelo sapere.

Come aggiungere una chiave pubblica ad una VPS per evitare l’errore “Permission denied (publickey)”
pexels pixabay 207580 scaled
Torna su