,

Come generare una coppia di chiavi per connettersi tramite SSH

Generazione coppia chiavi pubblica/privata.

Chiavi pubbliche e private? Basta che chiavi…

Ridi pure, a me è venuto da farlo. Scherzi a parte, l’ho scritto di getto perché ero distratto dal fattorino di JustEat che mi ha portato la cena.

Tenterò di spiegarti come fare a generare una coppia di chiavi pubblica/privata per collegarti tramite Secure Shell ad un server.

Robaccia da nerd, di sicuro, ma resterai stupito da quanto è più comodo, veloce e sicuro operare su un server in questo modo. Come on, abbi fede.

Cosa è una chiave pubblica? Ed una privata?

Hai presente quella meravigliosa scena di Tre Uomini ed una Gamba di Aldo, Giovanni e Giacomo, in cui si racconta la storia della “Mela di Platone”? Se non l’hai vista vedila, te la incorporo in questo post.

Oltre a dover vergognarti per non aver visto una delle pietre miliari del cinema contemporaneo (scherzo, non essere permaloso), la storia della mela di Platone incarna vagamente il funzionamento della coppia di chiavi. Dico vagamente perché, ovviamente, parliamo di due cose diverse.

Una chiave è, praticamente, un hash di una data lunghezza. La chiave pubblica risiede sul server, quella privata, invece, sul client (sul tuo pc, praticamente). Se la chiave privata si combina con quella pubblica il trasferimento di informazioni va a buon fine.

Buoni motivi per usare una coppia di chiavi

Non è che ti devo convincere, però ho trovato alcuni buoni motivi per utilizzare questo metodo. In ottica di produttività e di sicurezza, ma non solo.

  • E’ figo, indubbiamente. Già solo dirlo funziona.
  • E’ molto più sicuro rispetto ad utilizzare uno username e password.
  • E’ decisamente più veloce. Pensa ad utilizzare Github inserendo sempre login e password…
  • E’ comodo: porti con te le tue chiavi private in una usb e non dovrai mai più ricordare una password.
  • L’ho già detto che è figo?

Come si genera una coppia?

Piccolo disclaimer: non sono contrario a Windows. L’ho utilizzato per molti anni prima di passare a Linux. Sarò ironico perché è la mia natura e perché trovo molto più facile effettuare alcune operazioni in ambiente Linux piuttosto che Microsoft.

A volte si ha l’esigenza di generare una coppia di chiavi. La prima (pubblica e con estensione .pub) viene trasferita sul server. In genere in una cartella nascosta nella home, nominata .ssh, oppure caricata tramite una GUI qualsiasi come cPanel o Plesk. Quella privata, come ti dicevo, sul tuo pc.

Con Linux/OSX

Facilissimo, veloce, comodo.

ssh-keygen -t rsa

oppure

ssh-keygen -t dsa

a seconda di come ti serve. Potrai scegliere dove salvarla: se nella cartella di default o in un’altra posizione. E potrai ovviamente rinominarla.

Ti verrà chiesta una passphrase, puoi tranquillamente premere invio ed ignorarla. Nel caso la scrivessi ricorda che senza di quella la tua chiave diventa inutilizzabile.

Giusto un secondo ed avrai:

  1. Una chiave pubblica (id_dsa.pub)
  2. Una chiave privata (id_dsa)
  3. Un meraviglioso disegnino.
Generazione coppia chiavi pubblica/privata.

Da notare il disegnino. Meraviglioso!

Se apri le chiavi con un qualsiasi editor di testo (ti consiglio Leafpad o Gedit) vedrai gli hash ti cui ti parlavo.

Nel mio caso:

Chiave Pubblica

ssh-dss AAAAB3NzaC1kc3MAAACBAPtzNdNxSPF9so/ttJmGg7MOBJaMt5hfrFI5HLBvYKBuh+iqjI1ImTt9HqK6eHaAOerP5DjJpbV3pNlFBUhhpA/ZPNdP5/cLVD1CreDZPm6lqY1eodangUtu+R/VL9FjFoa9w4brXTJo/c1KSww6PddYd/orR3uakGuwqL+3v3wXAAAAFQCu55NeLWrJQlIsfEoxmSIkZN+BnQAAAIB1F4+QXbG/99OD7dufiJht8iNagpRy8k9LRQ3tVif/RzFL4TgZUslvtTdY+ld+MnYesoTC/o6zXFIR1GynW0s7IKYta2Qw8YsWAENVNbnn8xonLumcVs16tPE5MlCGb3BLHiKc9M5WwAxAU2E0ZLXIxQ0j1TH5lKbYKcSy5ZWiXQAAAIEAg5A4juvnGF1a2hr2PUuUuvhNWnXQX+CqdeeygE1kWP48IGSprHZs7pK8rbtXvQu80y8uVMDrHtiD/xtDX+/oynzx4JatkSI1q3m66mT9tfQo5AvYLMFQ4tsJpgAcxBRNF58bnMC0GWFSoSFnVnJTD3gcoBRA/6Wv8/Ch4v7cnUI= alph@alph-UX302LA

Chiave Privata

-----BEGIN DSA PRIVATE KEY-----
MIIBvAIBAAKBgQD7czXTcUjxfbKP7bSZhoOzDgSWjLeYX6xSORywb2CgbofoqoyN
SJk7fR6iunh2gDnqz+Q4yaW1d6TZRQVIYaQP2TzXT+f3C1Q9Qq3g2T5upamNXqHW
p4FLbvkf1S/RYxaGvcOG610yaP3NSksMOj3XWHf6K0d7mpBrsKi/t798FwIVAK7n
k14taslCUix8SjGZIiRk34GdAoGAdRePkF2xv/fTg+3bn4iYbfIjWoKUcvJPS0UN
7VYn/0cxS+E4GVLJb7U3WPpXfjJ2HrKEwv6Os1xSEdRsp1tLOyCmLWtkMPGLFgBD
VTW55/MaJy7pnFbNerTxOTJQhm9wSx4inPTOVsAMQFNhNGS1yMUNI9Ux+ZSm2CnE
suWVol0CgYEAg5A4juvnGF1a2hr2PUuUuvhNWnXQX+CqdeeygE1kWP48IGSprHZs
7pK8rbtXvQu80y8uVMDrHtiD/xtDX+/oynzx4JatkSI1q3m66mT9tfQo5AvYLMFQ
4tsJpgAcxBRNF58bnMC0GWFSoSFnVnJTD3gcoBRA/6Wv8/Ch4v7cnUICFQCFpiTL
iVUlyg7zA8ThWg5uny0HMA==
-----END DSA PRIVATE KEY-----

Abbastanza semplice e veloce.

Con Windows

Tutto più difficile. Come prima cosa devi scaricare un programma chiamato PuTTYgen.

Dopodichè segui questi passaggi:

  1. Scegli il tipo di chiave da generare (ad esempio SSH-2 RSA).
  2. Clicca il pulsante “Generate”.
  3. Muovi il mouse nello spazio sotto la barra di progresso come un forsennato. Stai generando? Bravo!
  4. Una volta terminato scegli se inserire o meno una passphrase.
  5. Clicca su “Save private key” e mettila al sicuro.
  6. Clicca su “Save public key” e caricala sul server oppure copiala dalla sezione in alto.

Ti rendi conto di quanto tempo sprecato?

Connettersi ad un server tramite SSH e coppia di chiavi

Siamo alla parte cicciosa. Hai generato le tue chiavi, hai spostato la chiave pubblica sul server, quella privata nella tua cartella. Hai premuto play su Space Oddity di David Bowie? Allora questo è il momento.

Con Linux/OSX

Super semplice. Apri un terminale (Ctrl + alt + t su Linux, dal Finder cerca “Terminale” su OSX) e scrivi

ssh -i percorso_della_tua_chiave_privata username@indirizzo_server

ed è fatta.

Dopo qualche secondo, se non hai sbagliato nulla, avrai un accesso SSH attivo al server.

Se vuoi qualcosa di ancora più nerd, attiva la modalità verbosedurante la connessione, aggiungendo “-vvv” dopo “ssh”.

Scherzi a parte, questa modalità ti permette di avere ulteriori informazioni nel caso la connessione non andasse a buon fine. Durante le peripezie per l’installazione di WordPress su AWS mi ha salvato da ore di disperazione.

Con Windows

Già che ci troviamo, torniamo su PuTTY, scaricando l’ultima release disponibile per Windows. Per intenderci, è la prima che scorri dall’alto, con estensione .msi.

Dopodichè installalo (ma va?) e lancialo.

Nella prima schermata potrai inserire l’indirizzo del server nella prima casella bianca in alto. Sulla destra potrai definire la porta (generalmente è la 22). Prima di cliccare su “Open”, dovrai però caricare la tua chiave privata.

Nel menù di sinistra clicca su Connection -> SSH -> Auth.

Infine su “Browse”, subito a destra della casella bianca. Potrai caricare qui la tua chiave privata.

Ritorna su Session e clicca su “Open”. Se tutto è andato a buon fine ti si aprirà un pop-up del software. Non perdere tempo a leggere, clicca su “Yes” e divertiti.

Ed ora che faccio?

A parte gongolarti e sentirti un po’ come Eliot in Mr Robot, avere accesso SSH ad un server può velocizzarti moltissime operazioni. Spostare, duplicare, cancellare file ti prenderà un istante. Dimentica la manfrina di dover scaricare un documento, modificarlo e ricaricarlo. Ci sono moltissimi editor di testo (tra cui NanoVIM) che ti permetteranno di cambiare i contenuti al volo. Puoi comprimere cartelle, scompattarle, fare backup di interi spazi, settare le permissions con una manciata di lettere. Ma soprattutto risparmiare un casino di tempo. Tratterò i comandi più comuni in un prossimo articolo.

Oppure, se sei un cattivone, fare altre cose divertenti che tratterò in futuro, a solo scopo illustrativo. Si va in galera, quindi non farlo, ma impegnati e scopri nuove cose.