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?


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.


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


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

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

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



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!


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.


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

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


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 git@github.com:user/myrepo.git
git remote -v // check if remote is changed
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.