Come rendere git non pronta per la passphrase per la chiave SSH su Windows?


43

Sto usando git bash e chiave di installazione ssh I usando ssh-keygen e ogni volta che faccio qualcosa con un repo git me chiedere passphrase per /c/Users/jankiewj/.ssh/id_rsa. C'è un modo per disattivare che passphrase.


Questa pagina su serverfault potrebbe aiutare serverfault.com/questions/194567/…

@Radoo non ha aiutato.
jcubic

Risposte:


56

È possibile eseguire questo in bash git:

eval `ssh-agent -s`
ssh-add ~/.ssh/*_rsa

chiederà per frase passaggio nell'area di secondo comando, e questo è tutto. Ogni azione aggiuntivi che si avrà bisogno di fare (che passphrase una volta richiesto) non chiederà la passphrase (vedere un esempio nella schermata qui sotto):

aggiunta di passphrase in git bash su Windows


7
Devo inserire di nuovo, non appena chiudo git bash ... c'è una soluzione permanente?
Nero

@Black è per sessione bash, ho messo questo in .bashrcmodo che ogni volta che apro git bash ricevo la richiesta e per quella sessione sono tutti insieme.
jcubic

Che cosa esattamente si fa a mettere in Bashrc?
Nero

Edit: non importa, è necessario creare il file yourselv in ~/.bashrcpoi inserire le linee dal tuo post in esso e salvare, questo è tutto :) thx!
Nero

Invece di usare le linee di cui sopra, in particolare nel .bashrc, vorrei utilizzare uno script, e posizionarlo sia nel .bash_profileo .profile. Qui è un frammento della parte principale della mia .bash_profile, che dovrebbe risolvere questo per chiunque ancora alla ricerca di una risposta; E 'simile a una risposta di seguito. Nella parte superiore dello script che carico il mio .bashrc, che, se non applicabile solo lasciare che fuori. Nota: è necessario modificare i riferimenti a id_rsaa tutto ciò che hai nominato la vostra chiave SSH privata, e forse il percorso.
Rockin4Life33

9

Un po 'migliore e soluzione permanente è quello di lanciare automaticamente l'ssh-agent quando si apre la bash git su Windows. È possibile copiare / incollare il qui sotto nella tua .profile o .bashrc. Io preferisco metterlo sul .profile

env=~/.ssh/agent.env

agent_load_env () { test -f "$env" && . "$env" >| /dev/null ; }

agent_start () {
    (umask 077; ssh-agent >| "$env")
    . "$env" >| /dev/null ; }

agent_load_env

# agent_run_state: 0=agent running w/ key; 1=agent w/o key; 2= agent not running
agent_run_state=$(ssh-add -l >| /dev/null 2>&1; echo $?)

if [ ! "$SSH_AUTH_SOCK" ] || [ $agent_run_state = 2 ]; then
    agent_start
    ssh-add
elif [ "$SSH_AUTH_SOCK" ] && [ $agent_run_state = 1 ]; then
    ssh-add
fi

unset env

Questa soluzione è stata presa da questo articolo di aiuto di github


Ho messo il mio codice semplice in .bashrc, come la vostra soluzione diversa? In Windows bash ogni shell è indipendente così l'agente non viene mai in esecuzione quando si esegue la shell.
jcubic

Soluzione funziona bene mettendo il codice nel .bashrc. La richiesta di conferma del passphrase ssh solo la prima volta. Safed la mia vita. Grazie.
Ben Asmussen

grazie che è molto salvato la vita.
gumuruh

Questo in realtà dovrebbe essere la risposta accettata in quanto presenta una soluzione che è persistente e meglio incontra quello che penso l'OP stava chiedendo.
Richard D

Cosa devo fare se ho inserito la password errata all'avvio? Edit: In base a superuser.com/a/271673/647110 , è possibile ssh-add -Deliminare tutti i tasti.
Nils Guillermin

1

Non sono sicuro se voglio consigliarlo, ma quando si crea la chiave e chiesto di password impostata, appena colpito entrare e saltare la password.

Date un'occhiata a questo link per sapere come utilizzare ssh-keygen: https://help.github.com/articles/working-with-ssh-key-passphrases/

Forse ssh-agentpuò aiutare in qualche modo. Ma non è sicuro senza conoscere il vostro sistema attuale.


4
sicuramente non una buona risposta
Kennet Celeste

Era l'unico modo per risolvere su Windows 10. Dopo aver seguito tutti i passaggi di "Creazione di una nuova chiave SSH e aggiungendolo al ssh-agent" guida GitHub, è stato sempre mi chiede la passphrase. Anche dopo aggiunto. Questo comportamento è stato rompendo il mio flusso distribuzione Maven, perché in mvn release:performfase si cerca di cassa il tag di rilascio senza fornire la passphrase. Quindi solo deselezionando la passphrase risolto questo problema.
Fernando Miguel Carvalho

-3

Inserire questo comando git nella tua posizione repos " ssh-keygen -p " Questo sarà quindi chiesto di inserire la posizione file di chiavi, il vecchio passphrase, e la nuova password (che può essere vuoto a sinistra per non avere passphrase). Non inserire nulla in nuova password e rimuoverà passphrase


1
Lasciando una password vuota è insicuro e molti sviluppatori aziendali non sarà in grado di avere una passphrase vuota a causa di restrizioni. Si tratta di una soluzione zoppo, non è una soluzione per il problema di OP.
cbaldan,

zoppo forse, ma per l'uso solo locale, gustoso e rapido ™
Jim P
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.