Autenticazione RSA e/o DSA per un server SSH

Le autenticazioni RSA e/o DSA sono utili per le connessioni con sistemi remoti attraverso il protocollo SSH-2 (e' possibile anche attraverso il protocollo SSH-1 ma non prenderemo in considerazione questa alternativa) poiche' permettono il collegamento senza che venga esplicitamente chiesta la password ogni volta. Inoltre attraverso l'uso di ssh-agent sara' richiesta la passphrase una sola volta. (Si consiglia di usare sempre la passphrase a protezione delle chiavi private generate)

Generare la propria coppia di chiavi (pubblica e privata) con i seguenti comandi:
ssh-keygen -t rsa (genera i file id_rsa e id_rsa.pub)
ssh-keygen -t dsa (genera i file id_dsa e id_dsa.pub)

Si compone quindi il file authorized_keys attraverso i comandi:
cd ~/.ssh/
cat id_dsa.pub > authorized_keys
cat id_rsa.pub >> authorized_keys

Il file authorized_keys va trasferito nelle directory .ssh/ all'interno della home degli utenti dei server su cui si vuole utilizzare questo tipo di autenticazione: il trasferimento puo' essere fatto in qualunque modo ma si consiglia l'uso di sftp

Il programma ssh-agent permette di autenticare in modo permanente una sessione di terminale al fine di digitare una sola volta la passphrase per la chiave generata. Per beneficiare di questa comodita' e garantire al contempo un buon livello di sicurezza al sistema, bisogna utilizzare tale programma solo se si utilizza ripetutamente l'autenticazione sopra descritta e chiuderlo quando non e' piu' necessario.

Per avviare ssh-agent digitare:
ssh-agent
ed eseguire i comandi che vengono scritti in output.

Per aggiungere la propria chiave ad ssh-agent ci si serve del comando
ssh-add
che richiedera' l'introduzione della passphrase.

Da questo momento e fino a quando il processo ssh-agent e' attivo la passphrase sara' automaticamente inviata ogni volta che una autenticazione RSA o DSA viene richiesta.

N.B.: E' consigliabile aggiungere la stringa
AllowUsers $nomeBreveUtente1, $nomeBreveUtente2, ecc...
al file sshd_conf (e riavviare il servizio) per limitare l'accesso ssh ai soli utenti che ne hanno la reale necessita'.
Per maggiore sicurezza controllare anche che siano presenti le impostazioni Protocol 2 (inibisce l'utilizzo dell'obsoleto protocollo 1), StrictModes yes (permette un maggiore controllo sui files di configurazione), PermitEmptyPasswords no (inibisce l'utente che abbia una password vuota), PermitRootLogin no (inibisce la possibilita' di entrare come superutente), ChrootDirectory (intrappola gli utenti all’interno di una determinata directory) e ForceCommand (forzare l’esecuzione di unico comando negando, ad esempio, l’accesso alla shell). [N.B.: Se avete sudo installato e correttamente configurato potete direttamente disabilitare l'utente root con il comando sudo passwd -l root (onde poi riabilitarlo con il comando sudo passwd root in caso di necessita').]

Joram Marino