Git fica me perguntando minha senha de chave ssh

538

Criei chaves conforme as instruções no tutorial do github, as registrei no github e tentei usar o ssh-agent explicitamente - mas o git continua a me pedir minha senha sempre que tento puxar ou empurrar.

O que poderia ser a causa?

Rogach
fonte

Respostas:

1039

Depois de iniciar o agente SSH com:

eval $(ssh-agent)
  1. Você precisa adicionar sua chave privada:

    ssh-add
    

    Isso solicitará sua senha apenas uma vez e você poderá pressionar, desde que tenha carregado a chave pública no Github.

  2. Para salvar a chave permanentemente no macOS:

    ssh-add -K  
    

    Isso persistirá após você fechar e reabri-lo, armazenando-o nas chaves do usuário.

Roberto Bonvallet
fonte
16
logoff do servidor, ssh de volta, execute git pull, solicite a senha novamente.
amigos estão dizendo sobre cyber8200
35
ssh-add -Kpersistirá depois que você fechar e reabri-lo, armazenando-o nas chaves do usuário.
Kirk #
72
O @Kirk ssh-add -Kfornece o seguinte: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
Ainda sou solicitado a fornecer uma senha, independentemente.
IgorGanapolsky
21
-Ké específico da maçã. Veja help.github.com/articles/…
bkdir
238

Isso vem acontecendo comigo após a reinicialização desde a atualização do OS X El Capitan (10.11) para o macOS Sierra (10.12). ossh-add solução funcionou temporariamente, mas não persistiu em outra reinicialização.

A solução permanente foi editar (ou criar) ~/.ssh/confige ativar a UseKeychainopção.

Host *
    UseKeychain yes

Relacionado: o macOS continua perguntando minha senha ssh desde que atualizei para o Sierra

Kyle Clegg
fonte
1
trabalhou para mim obrigado ... eu tinha feito ... ssh-add -K /Users/***/.ssh/git/id_rsamas ainda não estava funcionando após o reinício do terminal ... obrigado.
nawlbergs
2
Quer por que isso aconteceu? Leia a nota técnica sobre as alterações no OpenSSH developer.apple.com/library/content/technotes/tn2449/…
samwize
62

Se você tentou ssh-adde ainda é solicitado a digitar sua senha, tente usar ssh-add -K. Isso adiciona sua senha ao seu chaveiro.

Atualização: se você estiver usando o macOS Sierra, provavelmente precisará executar outra etapa, pois as opções acima podem não funcionar mais. Adicione o seguinte ao seu ~/.ssh/config:

Host *
  UseKeychain yes
Darryl Young
fonte
2
Ainda me solicita uma senha.
IgorGanapolsky
@IgorGanapolsky Você está usando o macOS Sierra? Nesse caso, confira o que acabei de adicionar à resposta. Espero que ajude.
Darryl Young
2
Sim, eu estou na Sierra. No entanto, aqui é a linha que trabalhou trabalhou para mim também: sim AddKeysToAgent
IgorGanapolsky
1
Isso também funciona com o BitBucket Cloud. Eu estava com problemas no GitKraken e isso resolveu meus problemas.
Malachi
54

Eu tentaria o seguinte:

  1. Inicie o GitBash
  2. Edite seu ~/.bashrc arquivo
  3. Adicione as seguintes linhas ao arquivo

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. Salve e feche o arquivo
  2. Feche o GitBash
  3. Reabrir o GitBash
  4. Digite sua senha
Roland
fonte
4
Para referência futura, isso também funciona com zsh. Basta adicionar isto a.zshrc
Arda
2
Acredito que isso pressupõe que seu arquivo-chave seja chamado id_rsa. Se você tiver um nome personalizado, use, por exemplo. /usr/bin/ssh-add ~/.ssh/custom_filename
Juha Untinen
2
Você pode explicar o que aconteceu com esse script?
Leer
2
@Lee, ele inicia o ssh-agent se ele ainda não estiver em execução, o que garante que você não solicite a senha do ssh a cada push (mais ou menos).
Roland
Isso apenas executa o ssh-agent e adiciona a chave em cada login. Você ainda precisa digitar a senha sempre que fizer login. Portanto, por exemplo, se você possui scripts para executar ssh e executar comandos GIT, isso infelizmente não é útil.
trainoasis 8/08/19
27

Tente adicionar isso ao seu ~ / .ssh / config :

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

... supondo que sua chave privada seja nomeada id_rsa

IgorGanapolsky
fonte
11
UseKeychain yes é válido apenas para mac
Oz123
3
@ Oz123 o que é o equivalente para Windows
IgorGanapolsky
@ Oz123 Eu acho que o equivalente no Windows é AddKeysToAgent verificar sim esta resposta stackoverflow.com/questions/52423626/...
fedeteka
6

Eu tive um problema semelhante, mas as outras respostas não resolveram o meu problema. Eu pensei em ir em frente e postar isso apenas no caso de alguém ter uma configuração maluca como eu.

Acontece que eu tinha várias chaves e o Git estava usando a primeira errado. Ele solicitaria minha senha e eu a digitaria, e o Git usaria uma chave diferente que funcionaria (que eu não precisava digitar a senha).

Acabei de excluir a chave que estava usando para solicitar uma senha e agora funciona!

11101101b
fonte
5

Parece que você pode estar tendo problemas com o próprio SSH-Agent. Eu tentaria solucionar isso.

1) Você fez o ssh-add para adicionar sua chave ao SSH?

2) Você está fechando a janela do terminal entre os usos, porque se você fechar a janela, precisará digitar a senha novamente quando a reabrir.

Jeff Welling
fonte
2
Seria bom adicionar informações sobre como resolver o primeiro problema Jeff Welling.
ranu
5

Se as soluções acima não estiverem funcionando para mim, uma coisa a verificar é que você também possui a chave pública (normalmente id_rsa.pub). É incomum não, mas essa foi a causa para mim.

Para criar sua chave pública a partir da sua chave privada:

ssh-keygen -y -f ~/.ssh/id_rsa > ~/.ssh/id_rsa.pub
Stephen Harris
fonte
1

Tento soluções diferentes, mas nada ajuda. Mas essas etapas ( meu ambiente SSH do GitBash sempre pede minha senha, o que posso fazer? ) Das costuras do Bitbucket.com funcionam bem:

A ideia é:

  1. você cria ~/.bashrcarquivo

  2. adicione o seguinte 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. re-execute o Bash

cotovia alx
fonte
1

Outra solução possível que não é mencionada acima é verificar seu controle remoto com o seguinte comando:

git remote -v

Se o controle remoto não iniciar com git, mas iniciar com https, você poderá alterá-lo para git seguindo o exemplo abaixo.

git remote -v // origin is https://github.com/user/myrepo.git
git remote set-url origin [email protected]:user/myrepo.git
git remote -v // check if remote is changed
Darkov
fonte