Odio profondamente le password. Nonostante il metodo "Come scegliere e organizzare le password" mi aiuti a tenere un minimo sotto controllo le cose, ed il sempre ottimo "KeePass Password Safe" contribuisca a non farmi dimenticare le credenziali d'accesso importanti, detesto comunque dover inserire tali dati all'interno del programma opportuno. Di più: la procedura di autenticazione è spesso interattiva, e le operazioni realizzate automaticamente via scripting ne risentono negativamente.
Per questi ed altri motivi, non esito, quando possibile, ad abbracciare soluzioni alternative.
Fortunatamente, il protocollo SSH offre, oltre alla già citata autenticazione mediante password, anche la possibilità di farsi riconoscere dal server presentendo, in modo automatico, una chiave di accesso segreta.
In questo articolo vedremo come adottare questo sistema nel nostro ambiente lavorativo.
Quello che andremo ad implementare è un'autenticazione mediante chiave asimmetrica.
Per una trattazione più completa sull'argomento vedasi l'articolo "Crittografia a chiave pubblica": per la compresone della trattazione corrente, basti comunque sapere che creeremo due chiavi.
Una, la componente "pubblica", fungerà da "lucchetto" e risiederà sul server.
L'altra dovrà essere invece custodita gelosamente sul client che tenterà l'accesso.
Ad ogni tentativo di log-in, il server presenterà il proprio lucchetto e richiederà al client di utilizzare la propria chiave per aprirlo: se il client non avrà tale informazione, non potrà accedere al server.
Pronti ad adottare questo sistema? Si parte.
La prima cosa da fare è generare la coppia di chiavi sul computer client.
Lanciate l'ambiente Cygwin, quindi impartite il comando ssh-keygen -t rsa
La procedura chiederà ora dove desiderate salvare i due file che costituiranno le chiavi. Accettate il percorso proposto, premendo semplicemente invio (confermate la volontà di sovrascrivere, se richiesto).
Ora, verrà richiesta una frase chiave (passphrase): poiché l'obbiettivo è proprio quello di connettersi senza bisogno di specificare la password, premete semplicemente invio, e quindi nuovamente per confermare.
Non preoccupatevi troppo: nessun altro client riuscirà ad accedere al server senza la chiave privata!
Il sistema elaborerà ora qualche istante: terminata l'operazione, le due chiavi saranno pronte.
Dovrete ora trasferire al server remoto la componente "pubblica" della chiave appena generata.
Per prima cosa, creiamo l'opportuna cartella sul server: poiché abbiamo SSH già in esecuzione su di esso, possiamo agire dal nostro client, lanciando il comando ssh Zane@srv-rettore "mkdir ~/.ssh/" ed immettendo la password di accesso quando richiesto (nota: il carattere "tilde" (~) si immette tenendo premuto Alt e digitando i numeri 1-2-6 sul tastierino numerico della testiera. In caso l'ambiente Cygwin non accettasse tale carattere, lanciate il comando dal tradizionale prompt di Windows).
Al solito, sostituite a Zane lo username impiegato sul server, ed a srv-rettore il reale nome o indirizzo della vostra macchina remota.
Potrebbe accadere che venga restituito un errore File exists. nulla di grave: significa semplicemente che la cartella esisteva già. Ignorate e proseguite tranquillamente.
Completata anche questa fase, procedete a trasferire la chiave pubblica al server remoto: per farlo, utilizzeremo il già descritto comando SCP. Inserite scp ~/.ssh/id_rsa.pub Zane@srv-rettore:~/.ssh/authorized_keys eseguendo gli opportuni adattamenti e digitando, per l'ultima volta!, la password associata all'utente.
Per verificare che tutto abbia funzionato a dovere, sarà sufficiente accedere al server con il comando ssh Zane@srv-rettore: se è tutto in ordine, l'accesso sarà immediato, senza necessità di inserire alcuna password.
Le possibilità a questo punto diventano numerose: potrete ad esempio lanciare qualsiasi comando sul vostro server via SSH senza aver più bisogno di specificare la password, oppure trasferire file con un semplice doppio click, mediante script che funzionano senza alcun bisogno di intervento da parte dell'utente.
Ora, abbiamo autorizzato il primo client ad accedere al sistema senza password. Ma come fare per consentire anche ai PC degli altri membri del team di fare lo stesso?
Per prima cosa, ripetete, sul PC del primo collega, il procedimento illustrato nel paragrafo "Generare la chiave".
Quindi caricate la chiave pubblica così generata in file temporaneo sul server, utilizzando il comando scp ~/.ssh/id_rsa.pub Zane@srv-rettore:~/.ssh/chiave_temporanea
Accodate ora la chiave temporanea del nuovo PC al file delle chiavi: per farlo, è necessario impartire il comando ssh Zane@srv-rettore "cat ~/.ssh/chiave_temporanea >> ~/.ssh/authorized_keys" .
Ora anche questo secondo PC dovrebbe aver accesso al server senza richiedere la password: eliminate quindi il file temporaneo, tramite ssh Zane@srv-rettore "rm ~/.ssh/chiave_temporanea".
Generate la chiave, caricatela e accodatela da ogni altro PC del vostro gruppo di lavoro che desidrate far accedere al server senza bisogno di password.
Per il momento, abbiamo implementato l'uso dell'autenticazione tramite chiave RSA al solo ambiente Cygwin (e relativo pacchetto utilità da prompt di comando di Windows).
Se utilizzate anche il client PuTTY per connettervi al vostro server SSH, è possibile estendere anche a tale programma questo pratico metodo di autenticazione. L'unica complicanza è che PuTTY non è in grado di gestire la chiave privata generata da ssh-keygen direttamente: è prima necessario convertirla in un formato differente.
Scaricate l'utilità PuTTYgen (io generalmente la conservo nella stessa cartella di PuTTY) e quindi avviate il programma
Ora, cliccate sul pulsante Load e quindi sfogliate il vostro disco fisso fino a raggiungere la cartella in cui avete installato Cygwin.
Da qui, selezionate il file home\Zane\.ssh\id_rsa e cliccate su Apri (fate attenzione! Il file si chiama id_rsa senza alcuna estensione)
PuTTYgen confermerà l'avvenuta apertura del file
Dopo aver cliccato su OK nella schermata informativa precedente, potete personalizzare il campo Key comment: con un messaggio a piacere, e quindi premere il pulsante Save private key: attenzione! È quello di destra!
Selezionate il percorso e stabilite un nome a piacere con salvare il file (nuovamente, raccomando di salvarlo nella stessa cartella di PuTTY) quindi chiudete PuTTYgen
Aprite a questo punto PuTTY, selezionate la sessione corrispondente al vostro server, e cliccate su Load (in caso ancora non l'aveste, procedete come descritto qui per crearne una).
Spostatevi quindi nel ramo Connection –> Data e sinceratevi che il nome utente da utilizzare sul server sia presente nel campo Auto-login username
Portatevi quindi in Connection –> SSH –> Auth ed, utilizzando il pulsante Browse, immettete il percorso necessario per raggiungere il file creato da PuTTYgen al passo precedente
Tornate quindi al ramo di opzioni iniziale, Session, e cliccate su Save per rendere effettive le modifiche.
D'ora in avanti, facendo doppio click sulla vostra sessione, potrete loggarvi immediatamente sul server SSH: fatelo subito, per verificare che tutto funzioni correttamente!
Una volta che avrete ultimato di configurate tutti i PC client che devono accedere al server, e avete debitamente testato che il sistema funzioni a dovere, potete pensare di inibire l'autenticazione tramite password sul server, lasciando come unica opzione per l'accesso il possesso della chiave RSA.
Spostatevi sul server, aprite Cygwin e digitate chown Zane /etc/sshd_config (facendo le opportune modifiche, in caso il vostro utente non si chiami Zane). Questo vi consentirà di modificare a piacimento il file di configurazione di OpenSSH.
Arrestate quindi il servizio con il comando net stop sshd.
Aprite ora Windows Explorer, localizzate la cartella di installazione di Cygwin, ed al suo interno la sottocartella etc: aprite il file sshd_config ivi contenuto con il vostro editor di testo semplice preferito. Attenzione a non confonderlo con il file ssh_config! Il file di nostro interesse presenta una d dopo la parola ssh).
Vi ricordo che, in caso il testo apparisse confuso e senza Interruzioni di linea, state probabilmente utilizzando un programma inadatto allo scopo: ne ho parlato nell'articolo Cosa fare quando un file di testo sembra illeggibile.
Utilizzate le funzioni di ricerca per individuare la riga che recita #PasswordAuthentication yes
Modificate yes in no, eliminate il carattere cancelletto, salvate e chiudete il file.
Ritornate ora a Cygwin ed impartite il comando di riavvio del servizio SSH: net start sshd.
Se ora proverete ad accedere al server da un PC sprovvisto di chiave RSA (provate ad esempio creando una nuova sessione con PuTTY), non riceverete più la richiesta di immettere la password, ma un erroraccio
Proprio quello che ci vuole, per tenere lontano i malintenzionati!
MegaLab.it rispetta la tua privacy. Per esercitare i tuoi diritti scrivi a: privacy@megalab.it .
Copyright 2008 MegaLab.it - Tutti i diritti sono riservati