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.