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?
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:
Depois de iniciar o agente SSH com:
eval $(ssh-agent)
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.
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.
git pull
, solicite a senha novamente.
ssh-add -K
persistirá depois que você fechar e reabri-lo, armazenando-o nas chaves do usuário.
ssh-add -K
fornece 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.
-K
é específico da maçã. Veja help.github.com/articles/…
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/config
e ativar a UseKeychain
opção.
Host *
UseKeychain yes
Relacionado: o macOS continua perguntando minha senha ssh desde que atualizei para o Sierra
ssh-add -K /Users/***/.ssh/git/id_rsa
mas ainda não estava funcionando após o reinício do terminal ... obrigado.
Se você tentou ssh-add
e 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
Eu tentaria o seguinte:
~/.bashrc
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
zsh
. Basta adicionar isto a.zshrc
id_rsa
. Se você tiver um nome personalizado, use, por exemplo. /usr/bin/ssh-add ~/.ssh/custom_filename
O que funcionou para mim no Windows foi (eu havia clonado o código de um repo 1st):
eval $(ssh-agent)
ssh-add
git pull
altura em que me pediu uma última vez a minha frase secreta
Créditos: a solução foi retirada de /unix/12195/how-to-avoid-being-asked-passphrase-each-time-i-push-to-bitbucket
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
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!
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.
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
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 é:
você cria ~/.bashrc
arquivo
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
re-execute o Bash
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