Skip to main content

SSH con autenticazione tramite chiave pubblica

Può capitare di volere utilizzare SSH con autenticazione tramite chiave digitale. Questo permette di autenticarsi su di un host remoto senza dovere fornire una password interattivamente e può essere utile per processi automatizzati (ad esempio nel caso di script lanciati da cron che utlizzino rsync tramite SSH per sincronizzare directory tra host diversi) dove non è possibile inserire la password interattivamente quando richiesto.

Per prima cosa se è la prima volta sul nostro host che utilizziamo questo meccanismo è necessario generare la coppia di chiavi privata/pubblica.

Possiamo farlo lanciando il comando

ssh-keygen

Lanciandolo senza parametri dovremo solo fornire il path di salvataggio delle chiavi (lasciamo quello di default) e la passphrase che non imposteremo lasciandola vuota (dare quindi invio due volte).

A questo punto utilizziamo il comando ssh-copy-id per installare la chiave pubblica sull'host verso il quale desideriamo autenticarsi in questo modo:

ssh-copy-id xxx.xxx.xxx.xxx

Possiamo verificare che tutto funzioni correttamente provando a collegarci con il comando ssh

ssh xxx.xxx.xxx.xxx

Se non viene richiesta la password il procedimento è andato a buon fine.

Referenze:

  • La guida SSH dal manuale ufficiale di Debian (in inglese): link
  • sshpass, un'alternativa per l'autenticazione non interattiva (in inglese): link