Dopo anni di gestione di server remoti, sono ancora un po’ confusa per quel che riguarda le chiavi criptate e l’autenticazione con chiavi crittografate di sicurezza. In estrema sintesi l’uso di chiavi al posto delle password evita che qualcuno possa carpire il contenuto al momento dell’invio, perché l’invio avviene, appunto, criptato.
Dato che oggi sono finalmente riuscita a connettermi al nuovo server con un paio di chiavi, scrivo rapidamente la procedura necessaria per non scordarla. Il primo punto è chiarire il tipo di crittografia per le chiavi accettata dal vostro server, nel mio caso mi serviva una chiave a SSH2-RSA a 2048 bit. L’idea è quelle di avere una propria chiave, che si chiama generalmente chiave privata, e mettere nel server una serratura che funziona solo se avete la giusta chiave, che si chiama chiave pubblica (nel senso che la potete dare in giro ogni volta che vi serve e non compromettete la vostra sicurezza).
Per poter connettervi ad un server in modo sicuro (cioè con protocollo SSH) via riga di comando (CLI) il programma ideale su Windows (perché quello uso) è Putty. Se scaricate l’installer, oltre al programma vi verranno fornite le “utilities” che vi servono proprio per lavorare con le chiavi.
Il programma principale, PUTTY.EXE (tutto maiuscolo come ai tempi di MS-DOS) è quello che vi permette di connettervi via telnet o ssh (ma anche seriale! non chiedetemi come l’ho scoperto) al vostro server remoto (o al vostro router…). Quello che però ci interessa al momento è il generatore delle chiavi, PUTTYGEN.EXE, a cui potete chiedere di generare la coppia chiave pubblica e chiave privata semplicemente cliccando su “Generate” e muovendo il mouse nel frattempo. Alla fine del processo al posto dello spazio bianco troverete un lungo testo selezionato, la vostra chiave pubblica da caricare nel server, e avrete la possibilità di aggiungere una passphrase (non credo vogliate rischiare che chiunque entri in possesso della vostra chiave privata possa usarla liberamente) e potrete finalmente salvare la vostra chiave privata (in una cartella che vi ricordate del vostro pc!) nel formato preferito da Putty, .ppk
. Il passo successivo sarà collegarvi al vostro server con utente e password per una ultima volta (diamo per scontato che l’accesso al server con Putty sapete come farlo!), e caricare la chiave pubblica in modo che possa essere verificata con la vostra privata alla connessione. In generale le chiavi pubbliche vengono salvate nella cartella .ssh
(le cartelle ed i file che iniziano con un punto sono quelli nascosti, in linux), che creeremo (se non esiste) e renderemo accessibile solo a noi.
mkdir .ssh chmod 700 .ssh
A questo punto la cosa più semplice è, nel pc, selezionare la chiave pubblica escludendo il testo finale “rsa-key-xxxxxxxx” e copiare
Per poi spostarci nella finestra di Putty e creare il file con le chiavi abilitate, se non esiste:
vi .ssh/authorized_keys i
ovvero apri nell’editor di testo vi un nuovo documento chiamato authorized_keys all’interno della cartella .ssh e attiva la modalità di inserimento del testo: se adesso farete click col tasto, destro Putty inserirà automaticamente il testo copiato e potrete procedere a salvare il file premendo il tasto ESC seguito da :wq
(esistono editor più amichevoli di vi, ma non sempre sono installati, io poi sono vecchia scuola…).
Non vi resta che mettere in sicurezza il vostro nuovo file dagli sguardi non voluti.
chmod 600 .ssh/authorized_keys exit
Con l’ultimo comando abbiamo chiuso la finestra di connessione, perché ora andiamo a modificare alcuni parametri della nostra sessione di connessione. Il primo è che se finora ci siamo sempre collegati direttamente all’host (miodominio.com) ora ci collegheremo come utente@miodominio.com, in modo che non ci venga più chiesto il nome utente all’avvio.
La seconda parte invece riguarda il caricamento della nostra chiave privata al momento della connessione. Per farlo dobbiamo specificare qualche chiave usare nella configurazione di Putty della nostra sessione, sotto Connection->SSH->Auth:
prima di salvare la nostra sessione e caricarla.
Se tutto è andato bene il server vi risponderà qualcosa del tipo
Using username "utente". Authenticating with public key "rsa-key-xxxxxxxx" from agent Passphrase for key "rsa-key-xxxxxxxx":
a cui risponderete inserendo la passphrase creata in PUTTYGEN per la vostra chiave privata.
Se vi collegate più volte al giorno usando una chiave, potete metterla in un “portachivi” che Putty vi fornisce, PAGEANT.EXE (il pc con il cappello): cliccando sulla relativa icona non succederà apparentemente nulla, in quanto si tratta di un servizio in background: lo trovate nel system tray (vicino all’orologio) e cliccandoci sopra col tasto destro, avrete l’opzione “Add Key” con cui potrete andare a caricare sia la chiave che la passphrase (valida fintanto che il programma non verrà chiuso).
Pageant funziona anche da scorciatoia per lanciare le sessioni salvate di Putty (Saved Sessions), per cui, due piccioni con una fava, una volta attivata la chiave potrete entrare nel server con un click, senza ulteriori password da inserire. Anzi, potete creare sul desktop una scorciatoia che carichi il programma e la chiave in un click (fonte) aggiungendo, come destinazione, il percorso della chiave privata nelle proprietà del collegamento:
A questo punto, quando cliccherete sul collegamento, vi verrà automaticamente chiesta la passphrase ed avrete accesso alle vostre sessioni salvate. Resta inteso che la seccatura di inserire la passphrase ogni volta è per la vostra sicurezza, dubito che vi piacerebbe fornire un duplicato delle vostre chiavi di casa a chiunque, e una chiave privata senza protezione è proprio questo. Ovviamente quella che vedete nell’esempio NON è la mia chiave pubblica reale, per quanto non vi possa servire a nulla se non ad accettare connessioni da parte mia nei vostri server!