Git continua a chiedermi la mia passphrase chiave ssh


538

Ho creato le chiavi come indicato nel tutorial di github, le ho registrate con github e ho provato a usare esplicitamente ssh-agent - eppure git continua a chiedermi la mia passphrase ogni volta che provo a fare un pull o un push.

Quale potrebbe essere la causa?


Risposte:


1039

Dopo aver avviato l'agente SSH con:

eval $(ssh-agent)
  1. Devi aggiungere la tua chiave privata:

    ssh-add
    

    Questo ti chiederà la passphrase solo una volta, e quindi dovresti essere autorizzato a inviare, a condizione che tu abbia caricato la chiave pubblica su Github.

  2. Per salvare la chiave in modo permanente su macOS:

    ssh-add -K  
    

    Questo persisterà dopo averlo chiuso e riaperto memorizzandolo nel portachiavi dell'utente.


16
disconnettersi dal server, tornare indietro, eseguire git pull, richiedere nuovamente la password.
cyber8200,

35
ssh-add -Kpersisterà dopo averlo chiuso e riaprirlo memorizzandolo nel portachiavi dell'utente.
Kirk,

72
@Kirk ssh-add -Kdà quanto segue:unknown option -- K usage: ssh-add [options] [file ...] Options: -l List fingerprints of all identities. -L List public key parameters of all identities. -k Load only keys and not certificates. -c Require confirmation to sign using identities -t life Set lifetime (in seconds) when adding identities. -d Delete identity. -D Delete all identities. -x Lock agent. -X Unlock agent. -s pkcs11 Add keys from PKCS#11 provider.
Sandeep C

13
Mi viene comunque richiesto un passphrase a prescindere.
IgorGanapolsky

21
-Kè specifico per la mela. Vedi help.github.com/articles/…
bkdir,

238

Questo è successo a me dopo il riavvio dall'aggiornamento da OS X El Capitan (10.11) a macOS Sierra (10.12). La ssh-addsoluzione ha funzionato temporaneamente, ma non avrebbe persistito per un altro riavvio.

La soluzione permanente era quella di modificare (o creare) ~/.ssh/confige abilitare l' UseKeychainopzione.

Host *
    UseKeychain yes

Correlati: macOS continua a chiedere la mia passphrase ssh da quando ho aggiornato a Sierra


1
ha funzionato per me grazie ... l'avevo fatto ... ssh-add -K /Users/***/.ssh/git/id_rsama dopo il riavvio del terminale non funzionava ancora ... grazie.
nawlbergs,

2
Vuoi perché questo accada? Leggi la nota tecnica sulle modifiche di OpenSSH developer.apple.com/library/content/technotes/tn2449/…
samwize

62

Se hai provato ssh-adde ti viene ancora richiesto di inserire la passphrase, prova a utilizzare ssh-add -K. Questo aggiunge la tua passphrase al tuo portachiavi.

Aggiornamento: se stai usando macOS Sierra, probabilmente dovrai fare un altro passo poiché quanto sopra potrebbe non funzionare più. Aggiungi quanto segue al tuo ~/.ssh/config:

Host *
  UseKeychain yes

2
Mi chiede ancora una passphrase.
IgorGanapolsky

@IgorGanapolsky Stai usando macOS Sierra? In tal caso, controlla cosa ho appena aggiunto alla risposta. Spero che aiuti.
Darryl Young,

2
Sì, sono sulla Sierra. Tuttavia, ecco la linea che ha funzionato anche per me: AddKeysToAgent yes
IgorGanapolsky

1
Questo funziona anche con BitBucket Cloud. Ho riscontrato problemi in GitKraken e questo ha risolto i miei problemi.
Malachi,

54

Vorrei provare quanto segue:

  1. Avvia GitBash
  2. Modifica il tuo ~/.bashrcfile
  3. Aggiungi le seguenti righe al file

SSH_ENV=$HOME/.ssh/environment

# start the ssh-agent
function start_agent {
    echo "Initializing new SSH agent..."
    # spawn ssh-agent
    /usr/bin/ssh-agent | sed 's/^echo/#echo/' > ${SSH_ENV}
    echo succeeded
    chmod 600 ${SSH_ENV}
    . ${SSH_ENV} > /dev/null
    /usr/bin/ssh-add
}

if [ -f "${SSH_ENV}" ]; then
     . ${SSH_ENV} > /dev/null
     ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
        start_agent;
    }
else
    start_agent;
fi
  1. Salva e chiudi il file
  2. Chiudi GitBash
  3. Riapri GitBash
  4. Inserisci la tua passphrase

4
Per riferimento futuro, funziona anche con zsh. Aggiungilo a.zshrc
Arda il

2
Credo che ciò presupponga che venga chiamato il tuo file di chiavi id_rsa. Se hai un nome personalizzato, dovresti usare ad es. /usr/bin/ssh-add ~/.ssh/custom_filename
Juha Untinen,

2
Puoi spiegare cosa succede a questa sceneggiatura?
LeeR

2
@Lee avvia ssh-agent se non è già in esecuzione, che è ciò che si assicura di non chiederti la passphrase ssh su ogni push (più o meno).
Roland,

Questo esegue solo ssh-agent e aggiunge la chiave ad ogni login. Devi comunque inserire la password ogni volta che accedi. Quindi, ad esempio, se si dispone di script che eseguono script e eseguono comandi GIT, questo purtroppo non è affatto utile.
trainoasi,


27

Prova ad aggiungere questo al tuo ~ / .ssh / config :

Host *
   AddKeysToAgent yes
   UseKeychain yes
   IdentityFile ~/.ssh/id_rsa

... supponendo che la tua chiave privata sia denominata id_rsa


11
UsaKeychain yes è valido solo per mac
Oz123

3
@ Oz123 qual è l'equivalente per Windows
IgorGanapolsky

@ Oz123 Credo che l'equivalente su Windows è AddKeysToAgent sì controllare questa risposta stackoverflow.com/questions/52423626/...
fedeteka

6

Ho avuto un problema simile, ma le altre risposte non hanno risolto il mio problema. Ho pensato di andare avanti e pubblicare questo nel caso in cui qualcun altro ha una configurazione sbagliata come me.

Si scopre che avevo più chiavi e Git stava usando prima quella sbagliata. Mi richiederebbe la mia passphrase e la inserirei, quindi Git userebbe una chiave diversa che funzionerebbe (che non avevo bisogno di inserire la passphrase).

Ho appena cancellato la chiave che stava usando per chiedermi una passphrase e ora funziona!


5

Sembra che potresti avere problemi con lo stesso SSH-Agent. Vorrei provare a risolverlo.

1) Hai fatto ssh-add per aggiungere la tua chiave a SSH?

2) Stai chiudendo la finestra del terminale tra gli usi, perché se chiudi la finestra dovrai inserire di nuovo la password quando la riapri.


2
Sarebbe bello aggiungere informazioni su come risolvere il primo problema Jeff Welling.
ranu,

5

Se le soluzioni di cui sopra non funzionano per me, una cosa da verificare è che in realtà hai anche la chiave pubblica (in genere id_rsa.pub). È insolito non farlo, ma questa è stata la causa per me.

Per creare la chiave pubblica dalla chiave privata:

ssh-keygen -y -f ~/.ssh/id_rsa > ~/.ssh/id_rsa.pub

1

Provo diverse soluzioni ma niente aiuta. Ma questa procedura (l' ambiente My GitBash SSH richiede sempre la mia passphrase, cosa posso fare? ) Dalle cuciture di Bitbucket.com funziona bene:

L'idea è:

  1. si crea un ~/.bashrcfile

  2. aggiungi segui script:

    SSH_ENV=$HOME/.ssh/environment
    
    # start the ssh-agent
        function start_agent {
        echo "Initializing new SSH agent..."
        # spawn ssh-agent
        /usr/bin/ssh-agent | sed 's/^echo/#echo/' > "${SSH_ENV}"
        echo succeeded
        chmod 600 "${SSH_ENV}"
        . "${SSH_ENV}" > /dev/null
        /usr/bin/ssh-add
    }
    
    if [ -f "${SSH_ENV}" ]; then
         . "${SSH_ENV}" > /dev/null
         ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
            start_agent;
        }
    else
        start_agent;
    fi
    
  3. rieseguire Bash


1

Un'altra possibile soluzione che non è menzionata sopra è quella di controllare il telecomando con il seguente comando:

git remote -v

Se il telecomando non si avvia con git ma inizia con https, è possibile modificarlo in git seguendo l'esempio seguente.

git remote -v // origin is https://github.com/user/myrepo.git
git remote set-url origin git@github.com:user/myrepo.git
git remote -v // check if remote is changed
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.