Secure Shell (SSH) è un protocollo standard che consente l’accesso criptato a sistemi remoti, consentendo a un programmatore o a una programmatrice di accedere al server dal proprio dispositivo locale. In Git, SSH funge da protocollo di trasmissione e consente a chi legge e a chi scrive di accedere ai repository remoti.
Per consentire l’autenticazione del dispositivo e assicurare la sicurezza dei dati trasmessi si usa una connessione criptata. Se così non fosse, qualsiasi persona esterna potrebbe modificare i repository a proprio piacimento.
Per la creazione di chiavi SSH, Git usa il metodo della crittografia asimmetrica, che consiste nel creare una coppia di chiavi private e pubbliche, anche definita “Public-Private Keypair”. La chiave privata resta sul computer. La chiave pubblica viene invece condivisa con servizi di terze parti, ad esempio con GitHub.
L’uso di una chiave SSH per accedere ai repository GitHub rende superfluo l’inserimento di una password. In generale, l’accesso senza password è considerato più sicuro poiché impedisce gli attacchi di keylogger o trojan, che agiscono proprio sulla chiave di accesso. Invece di confermare l’identità di una persona mediante una password, il procedimento mira ad autenticare la macchina sulla quale è salvata la chiave privata.
Usare Git mediante protocollo SSH è decisamente pratico. Una volta messa a punto la configurazione della chiave SSH, sarà possibile accedere direttamente a GitHub senza dover fare nient’altro. Anche altri protocolli e servizi si servono di chiavi SSH per stabilire connessioni di rete criptate. Oltre a SSH, Git consente l’uso del protocollo sicuro SFTP per lo scambio di dati, senza necessità di configurare ulteriormente il programma.
La connessione con i repository di Git avviene normalmente dalla riga di comando. Se è stata impostata una chiave SSH, è possibile eseguire facilmente git push sul proprio repository: