Se stai usando SSH e la chiave privata viene crittografata con una passphrase, allora ci si può comunque verrà richiesto di inserire la passphrase / password per la chiave privata quando si fanno operazioni di rete con Git come push
, pull
e fetch
.
Utilizzare ssh-agent per salvare le credenziali della passphrase / password della chiave privata
Se si desidera evitare di inserire ogni volta la passphrase, è possibile utilizzare ssh-agent
per memorizzare le credenziali della passphrase della chiave privata una volta per sessione terminale, come spiego nella mia risposta a Impossibile aprire una connessione al proprio agente di autenticazione :
$ eval `ssh-agent -s`
$ ssh-add
In un Bash msysgit di Windows, è necessario valutare l'output di ssh-agent
, ma non sono sicuro se è necessario fare lo stesso in altri ambienti di sviluppo e sistemi operativi.
ssh-add
cerca una chiave privata nella .ssh
cartella principale chiamata id_rsa
, che è il nome predefinito, ma è possibile passare un percorso file a una chiave con un nome diverso.
Uccidere l'agente
Al termine della sessione del terminale, è possibile arrestare ssh-agent
con il flag di interruzione -k
:
$ ssh-agent -k
Come spiegato nel ssh-agent
manuale :
-k
Uccidi l'agente corrente (fornito dalla variabile d'ambiente SSH_AGENT_PID).
Timeout opzionale
Inoltre, può richiedere un parametro di timeout opzionale in questo modo:
$ ssh-add -t <timeout>
dove <timeout>
è del formato <n>h
per <n>
ore, <n>m
per <n>
minuti, e così via.
Secondo il ssh-agent
manuale :
-t life
Impostare un valore predefinito per la durata massima delle identità aggiunte all'agente. La durata può essere specificata in secondi o in un formato orario specificato in sshd_config (5) . Una durata specificata per un'identità con ssh-add (1) sostituisce questo valore. Senza questa opzione la durata massima predefinita è per sempre.
Vedi questa pagina per più formati temporali .
Avviso di sicurezza per gli utenti Cygwin
Gli utenti di Cygwin dovrebbero essere consapevoli di un potenziale rischio per la sicurezza con l'utilizzo di ssh-agent in Cygwin :
le persone dovrebbero essere consapevoli dei potenziali pericoli di ssh-agent sotto Cygwin 1 , sebbene sotto un netstat locale e portcan remoti non sembra che la porta specificata in / tmp / ssh-foo sia accessibile a chiunque ...?
[1]: http://www.cygwin.com/ml/cygwin/2001-01/msg00063.html
E al link citato :
Si noti tuttavia che socket di dominio Unix di Cygwin sono intrinsecamente insicuro e così ho fortemente scoraggiare l'utilizzo di ssh-agent sotto Cygwin.
quando si esegue ssh-agent sotto Cygwin, viene creato il socket AF_UNIX nella /tmp/ssh-$USERNAME/
directory. In Cygwin le prese AF_UNIX sono emulate tramite prese AF_INET. Puoi facilmente vederlo se guarderai nel /tmp/ssh-$USERNAME/agent-socket-*
file tramite Blocco note. Vedrai qualcosa del genere
!<socket >2080
quindi corri netstat -a
e sorprendi! Hai qualche programma che ascolta la porta 2080. È ssh-agent. Quando ssh riceve una richiesta RSA dal server, si riferisce al corrispondente /tmp/ssh-$USERNAME/agent-socket-*
(in Cygwin, nel nostro caso, ciò significa che aprirà la connessione a localhost:2080
) e chiede a ssh-agent di elaborare la sfida RSA con la chiave privata che ha, e quindi passa semplicemente la risposta ricevuta dall'agente ssh al server.
In Unix, un tale scenario funziona senza problemi, poiché il kernel Unix verifica le autorizzazioni quando il programma tenta di accedere a un socket AF_UNIX. Per i socket AF_INET, tuttavia, le connessioni sono anonime (leggi "insicuro"). Immagina di avere l'agente ssh di Cygwin in esecuzione. Un hacker malintenzionato può eseguire la scansione della tua casella, individuare la porta aperta utilizzata da ssh-agent, aprire una connessione al tuo server SSH, ricevere la sfida RSA da essa, inviarla al tuo ssh-agent tramite una porta aperta che ha trovato, ricevere il Risposta RSA, invialo al server SSH e voilà, ha effettuato correttamente l'accesso al tuo server come te.