Perché git non riesce a ricordare la mia passphrase in Windows

Ho appena iniziato a usare git e non riesco a farmi ricordare la mia frase segreta sto usando cmd.exe elevato e il mio git host è github e ho creato una chiave ssh come quella guida su github

ma continuo a ricevere

*\subnus.mvc>git push origin master Enter passphrase for key '/c/Users/Subnus/.ssh/id_rsa': 

Mi rendo conto che questa domanda sta arrivando a due anni, ma ho avuto lo stesso problema e diverse risposte qui non hanno risposto completamente alla domanda per me. Ecco due soluzioni passo passo, a seconda se si utilizza TortoiseGit oltre a msysgit o meno.

La prima soluzione presuppone Windows, msysgit e PuTTY.

  1. Installa msysgit e PuTTY come indicato.
  2. (Opzionale) Aggiungi PuTTY al tuo percorso. (Se non si esegue questa operazione, qualsiasi riferimento ai comandi di PuTTY di seguito deve essere preceduto dal percorso completo dell’eseguibile appropriato).
  3. Se non lo hai già fatto, quindi genera un hash chiave come indicato su GitHub o come indicato dal tuo host Git.
  4. Anche in questo caso, se non lo hai già fatto, converti la chiave per l’utilizzo con pageant.exe di PuTTY usando puttygen.exe . Le istruzioni sono nella documentazione di PuTTY, in questa guida utile e in molti altri posti nel cyberspazio.
  5. Esegui il file Pageant.exe di PuTTY, apri il file .ppk (“Aggiungi chiave”) e inserisci la passphrase per la chiave.
  6. Accedere alla finestra di dialogo delle variabili d’ambiente di Windows (fare clic con il tasto destro del mouse su “Computer”, fare clic su “Proprietà”, fare clic su “Impostazioni di sistema avanzate” o sulla scheda “Avanzate”, fare clic su “Variabili d’ambiente”). Aggiungi la seguente variabile d’ambiente:

    GIT_SSH = C: \ \ percorso completo \ a \ plink.exe

    Sostituisci “C: \ full \ path \ to” con il percorso di installazione completo in PuTTY, dove viene trovato plink.exe. Probabilmente è meglio aggiungerlo alla sezione “Variabili utente”. Inoltre, assicurarsi che il percorso utilizzato per plink.exe corrisponda al percorso utilizzato per Pageant (pageant.exe). In alcuni casi potresti avere diverse installazioni di PuTTY perché potrebbe essere installato insieme ad altre applicazioni. L’utilizzo di plink.exe da un’installazione e una pageant.exe da un’altra probabilmente causerà problemi.

  7. Apri un prompt dei comandi.

  8. Se stai provando a connetterti a un repository git ospitato su Github.com, esegui il seguente comando:

    plink.exe git@github.com

    Se il repository git a cui stai tentando di connettersi è ospitato da qualche altra parte, allora sostituisci git@github.com con un nome utente e un URL appropriati. (Supponendo Github) Si dovrebbe essere informati che la chiave host del server non è memorizzata nella cache, e ha chiesto se ci si fida di esso. Rispondi con un y . Questo aggiungerà la chiave host del server all’elenco di host noti di PuTTY. Senza questo passo i comandi git non funzioneranno correttamente. Dopo aver premuto enter, Github ti informa che Github non fornisce l’accesso alla shell. Va bene … non ne abbiamo bisogno. (Se ci si connette ad un altro host e si ha accesso alla shell, è probabilmente meglio terminare il collegamento senza fare altro.)

  9. Tutto fatto! I comandi Git dovrebbero ora funzionare dalla riga di comando. Potresti volere che pageant.exe carichi automaticamente il tuo file .ppk al momento dell’avvio , a seconda di quanto spesso ti servirà.

La seconda soluzione presuppone Windows, msysgit e TortoiseGit.

TortoiseGit viene fornito con gli eseguibili PuTTY e una versione di plink appositamente modificata (chiamata TortoisePlink.exe) che semplificherà le cose.

  1. Installa msysgit e TortoiseGit come da istruzioni.
  2. Se non lo hai già fatto, quindi genera un hash chiave come indicato su GitHub o come indicato dal tuo host Git.
  3. Anche in questo caso, se non lo hai già fatto, converti la chiave per l’uso con pageant.exe di TortoiseGit usando puttygen.exe di TortoiseGit. Le istruzioni sono nella documentazione di PuTTY, nella guida utile collegata alla prima soluzione e in molti altri luoghi nel cyberspazio.
  4. Esegui il file pageant.exe di TortoiseGit, apri il file .ppk (“Aggiungi chiave”) e inserisci la passphrase per la chiave.
  5. Accedere alla finestra di dialogo delle variabili d’ambiente di Windows (fare clic con il tasto destro del mouse su “Computer”, fare clic su “Proprietà”, fare clic su “Impostazioni di sistema avanzate” o sulla scheda “Avanzate”, fare clic su “Variabili d’ambiente”). Aggiungi la seguente variabile d’ambiente:

    GIT_SSH = C: \ piena \ percorso \ a \ TortoisePlink.exe

    Sostituisci “C: \ full \ path \ to” con il percorso di installazione completo di TortoiseGit, dove viene trovato TortoisePlink.exe. Probabilmente è meglio aggiungerlo alla sezione “Variabili utente”. Inoltre, assicurarsi che il percorso utilizzato per TortoisePlink.exe corrisponda al percorso utilizzato per Pageant (pageant.exe). In alcuni casi potresti avere diverse installazioni di PuTTY perché potrebbe essere installato insieme ad altre applicazioni. L’utilizzo di TortoisePlink.exe dall’installazione di TortoiseGit e di pageant.exe da un’altra installazione di un’applicazione diversa (o da un’installazione di PuTTY autonoma) potrebbe causare problemi.

  6. Tutto fatto! I comandi Git dovrebbero ora funzionare dalla riga di comando. La prima volta che tenti di connetterti al tuo repository git verrai probabilmente informato che la chiave host del server non è memorizzata nella cache e ti chiede se ti fidi del server. Clicca su “Sì”. (Questo è TortoisePlink.exe in azione.)

    Potresti volere che pageant.exe carichi automaticamente il tuo file .ppk al momento dell’avvio , a seconda di quanto spesso ti servirà.

Terza soluzione Assume Window, msysgit e prompt dei comandi nativo.

  1. Installa msysgit
  2. Assicurati di consentire a git di essere usato sul prompt dei comandi di MS-DOS
  3. Esegui start-ssh-agent
  4. Inserisci passphrase SSH
  5. Tutto fatto! I comandi Git dovrebbero ora funzionare nel prompt dei comandi nativo.

Per chiunque necessiti di istruzioni più dettagliate, consultare questa pagina: http://help.github.com/working-with-key-passphrases/

Quello non è git, è ssh.

Non faccio Windows, ma ssh ha un concetto di agente che può ricordare le passphrase per te. OS X è abilitato per impostazione predefinita. Il tuo client ssh probabilmente ha un modo per configurarlo.

Una soluzione extra di 5 anni, 8 mesi e 6 giorni dopo la pubblicazione della domanda non sarebbe stata una ctriggers idea, quindi ecco qui.

NOTA: si presume che si stia utilizzando un computer Windows.

  1. Scarica il git-credential-winstore .
  2. Eseguirlo! Se hai GIT nella tua variabile d’ambiente PATH , dovrebbe funzionare. In caso contrario, eseguire git-credential-winstore -i C:\Path\To\Git.exe .

La prossima volta che tenterai di eseguire il commit su un repository, ti verrà richiesto di inserire le tue credenziali. Questo dovrebbe essere. Non ti verranno richieste le tue credenziali finché non cambierai la tua password.


Solo per tua conoscenza … Le tue credenziali sono memorizzate nell’archivio credenziali di Windows

Dove stai memorizzando le mie credenziali?

Questa app utilizza solo l’archivio delle credenziali di Windows esistente per conservare le tue credenziali. È ansible visualizzare le credenziali archiviate andando su Pannello di controllo> Account utente> Gestione credenziali e scegliendo “Credenziali Windows”. Le voci che iniziano “git:” provengono da git-credential-winstore.

[modifica – lettura errata della domanda, questa è una risposta a un problema correlato. lasciando la versione riformata per i posteri]

Il mio caso era che stavo cercando di spingere ad un repository che era ospitato su uno dei nostri server. Ogni volta che provavo a fare una spinta, git mi chiedeva la mia password (nb – password, non la passphrase alla mia chiave privata).

Aggiungendo la mia chiave pubblica alle chiavi autorizzate sul server, sono stato in grado di ottenere push senza password su quel server. E, perché non c’era la frase segreta sulla mia chiave privata (che è una ctriggers pratica btw!) Non avevo bisogno di digitare nulla dentro.

Ecco il comando per aggiungere la tua chiave pubblica a un server. Si presuppone che l’utente git sia l’utente sul server.

 cat .ssh/id_rsa.pub | ssh git@GIT_MASTER_IP 'cat >> .ssh/authorized_keys' 

È ansible ottenere la stessa cosa accedendo al server e aggiungendo manualmente la propria chiave pubblica al file in ~/.ssh/authorized_keys

Se si imposta una password per il file chiave, è sempre necessario digitare tale password durante la connessione. Se crei una chiave senza password, non dovrai scriverla ogni volta, tuttavia, chiunque abbia accesso al tuo file chiave può ora connettersi al tuo account github.

anche ssh-agent potrebbe funzionare. Prova a eseguirlo e vedi se ricorderà la passphrase.

Mi rendo conto che sono passati diversi anni, ma mi sono imbattuto in questa domanda cercando di trovare una soluzione, e ho trovato qualcosa che si adatta a tutti i livelli di esperienza, così ho pensato di condividere.

GitHub fornisce un programma di installazione molto utile che semplifica tutto: https://help.github.com/articles/caching-your-github-password-in-git/

C’è una soluzione molto più semplice a questo problema se non ti dispiace avere la password memorizzata in testo in chiaro e stai usando TortoiseGit.

Basta creare un file _netrc nella directory del profilo utente, ad esempio in Windows 7 sarebbe C:\Users\MyName\_netrc . Questo file memorizzerà le informazioni di accesso in questo formato:

 machine bitbucket.org login thisismyname password p455w0rD machine bitbucket.org login another_account password pwdpwdPWd machine github.com login thisismynameagain password p455w0rD 

Sto usando TortoisePLink come client SSH e funziona perfettamente.

Nel caso in cui si utilizzi Git bash sotto Windows è ansible eseguire quanto segue:

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

chiederà la passphrase nel secondo comando, e il gioco è fatto. Ogni ulteriore azione che dovrai eseguire (che una volta richiede la passphrase) non ti chiederà la passphrase (vedi un esempio nella schermata qui sotto):

aggiungendo la pass phrase in Git bash su Windows

Spero che sia d’aiuto.

Saluti,

Tipo.

puoi provare ad aggiungere -k arg quando lo fai;

 ssh-add -k ~/.ssh/id_rsa 

Puoi creare il file .bashrc nella directory home dell’utente come C: / Users / youruser e inserirli qui:

 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 

È uno script, eseguito ogni volta dopo l’esecuzione di bash. Quindi dovrai inserire la password una sola volta, quando viene avviato git-bash!

Alcune versioni di bash richiedono invece il file .bash_profile .bashrc quindi nel caso clone .bashrc:

 copy .bashrc .bash_profile