Permissão do Github negada: ssh add agent não tem identidades


148

Esta é minha primeira vez acessando o GitHub e não tenho experiência em usar um console. Estou em um MacBook usando o Bash. Quando tento acessar o GitHub, recebo o seguinte:

git clone git@github.com:dhulihan/league-of-legends-data-scraper.git
Cloning into 'league-of-legends-data-scraper'...
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

Tentei seguir as instruções na página do Github sobre permissão negada.

Quando uso ssh -vT git@github.com, recebo o seguinte:

OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
debug1: Reading configuration data /etc/ssh_config
debug1: /etc/ssh_config line 20: Applying options for *
debug1: Connecting to github.com [192.30.252.129] port 22.
debug1: Connection established.
debug1: identity file /Users/XXXX/.ssh/id_rsa type -1
debug1: identity file /Users/XXXX/.ssh/id_rsa-cert type -1
debug1: identity file /Users/XXXX/.ssh/id_dsa type -1
debug1: identity file /Users/XXXX/.ssh/id_dsa-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.2
debug1: Remote protocol version 2.0, remote software version libssh-0.6.0
debug1: no match: libssh-0.6.0
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-sha1 none
debug1: kex: client->server aes128-ctr hmac-sha1 none
debug1: sending SSH2_MSG_KEXDH_INIT
debug1: expecting SSH2_MSG_KEXDH_REPLY
debug1: Server host key: RSA 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48
debug1: Host 'github.com' is known and matches the RSA host key.
debug1: Found key in /Users/XXXX/.ssh/known_hosts:1
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Trying private key: /Users/XXXX/.ssh/id_rsa
debug1: Trying private key: /Users/XXXX/.ssh/id_dsa
debug1: No more authentication methods to try.
Permission denied (publickey).

Em seguida, eval "$(ssh-agent -s)"retorna "Agente pid 2314", no entanto ssh-add -lretorna "O agente não tem identidades".

E é aí que estou preso.


Você tem uma chave SSH criada? Você o listado na sua conta do github? Você tem a chave no seu mac?
Etan Reisner 22/10

Eu estava procurando a resposta para essa pergunta (não conhecendo todo esse sistema) e encontrei o seguinte: mac.github.com Ele resolveu todos os meus problemas. Eu recomendo. Obrigado pelo empurrão na direção certa, Etan!
Escuro

4
Você pode adicionar uma resposta a esta pergunta (com mais detalhes sobre como ele resolveu o seu problema) e aceitar sua resposta.
Etan Reisner

Ok, enviei a resposta. SO está me dizendo que só posso aceitá-lo em 2 horas.
Escuro

Respostas:


194

Detalhes completos nesta resposta .

Em resumo, quando ssh-add -lretorna “O agente não tem identidades”, isso significa que as chaves utilizadas pelo ssh(armazenados em arquivos, como ~/.ssh/id_rsa, ~/.ssh/id_dsa, etc.) estão ausentes, eles não são conhecidos por ssh-agent, que é o agente de autenticação, ou que suas permissões estão configurados incorretamente (por exemplo, gravável no mundo).

Se suas chaves estiverem ausentes ou se você não tiver gerado nenhuma, use ssh-keygen -t rsae ssh-addadicione-as.

Se as chaves existem, mas não são conhecidas ssh-agent(como se estivessem em uma pasta não padrão), use-as ssh-add /path/to/my-non-standard-ssh-folder/id_rsapara adicioná-las.

Veja esta resposta se você estiver tendo problemas com ssh-addou  ssh-agent.


4
Obrigado @Doedoe por um link para uma resposta curta e agradável. E para aqueles que possuem chaves (por exemplo, várias contas Git), talvez seja necessário usar ssh-add /path/to/keyXcada uma delas, especialmente se elas tiverem nomes não-padrão. Detalhes aqui: stackoverflow.com/questions/3225862/… (uma boa resposta)
tuk0z

Obrigado por isso. Fiquei preso aqui .. mas percebi que precisava executar ssh-add novamente depois de resolver a parte de permissões do problema. Depois disso, ssh -vT git@github.comnão funcionou. Eu precisava adicionar o caminho absoluto, como o comentador acima mencionado. Então, foi tudo molho.
jungledev

2
No segundo caso Esqueci minha senha e eu recuperou-lo usando help.github.com/articles/how-do-i-recover-my-ssh-key-passphrase
Malder

111

tente isto:

ssh-add ~/.ssh/id_rsa

trabalhou para mim


5
Olá, bem-vindo ao SO. Explique seu código para que seus colegas usuários possam entender o que está acontecendo. Felicidades.
Cthulhu

4
Quando você reinicia, suas chaves se foram e você precisa adicioná-las novamente.
Louwki

@Louwki Sim ... isso é super chato. Você conhece uma maneira de contornar isso?
precisa saber é o seguinte

3
O @ChrisCirefice apenas faz o ssh-add com um parâmetro para adicioná-los permanentemente ao seu chaveiro. ssh-add -K ~ / .ssh / [sua-chave-privada]
Louwki

1
No meu caso, as permissões de arquivo estavam erradas para a chave privada. Corrigido por chmod 600 ~/.ssh/id_rsa, entãossh-add ~/.ssh/id_rsa
Morteza Ziyae

39

A RESPOSTA DE 2019 para o macOS Sierra e High Sierra e Catalina:

PS: a maioria das outras respostas fará com que você crie uma nova chave ssh ... mas você não precisa fazer isso :)

Conforme descrito em detalhes em https://openradar.appspot.com/27348363 , o macOS / OS X até o Yosemite costumava lembrar as chaves SSH adicionadas pelo comandossh-add -K <key>

Então, aqui estão as quatro etapas que eu tive que executar para que funcionasse:

1: ssh-add ~/.ssh/PATH_TO_YOUR_SSH_PRIVATE_KEY (e.g. ~/.ssh/id_rsa)

2: Adicione o seguinte em~/.ssh/config

Host * 
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile PATH_TO_YOUR_SSH_PRIVATE_KEY (e.g. ~/.ssh/id_rsa)

3: certifique-se de remover qualquer entrada gitconfig que use o osxkeychain helper:

 https://github.com/gregory/dotfiles/commit/e38000527fb1a82b577f2dcf685aeefd3b78a609#diff-6cb0f77b38346e0fed47293bdc6430c6L48

4: reinicie seu terminal para que ele entre em vigor.


3
Ótima resposta, eu mesmo mencionaria isso! Aparentemente, o OS X 10.12.2 e posterior não carrega automaticamente identidades no ssh-agent (o que pessoalmente acho uma decisão de usabilidade realmente estúpida, mas entendo as implicações de segurança). Portanto, você precisa modificar a configuração do SSH para carregá-los manualmente. Eu só queria que a saída do erro levasse melhor a uma solução, em vez de uma hora pesquisando na Internet.
Chris Cirefice

12

Fui preso por um tempo no mesmo problema, que acabei resolvendo.

Meu problema : não consegui executar nenhum push. Eu pude verificar e ver meu controle remoto (usando git remote -v), mas quando o executei git push origin master, ele retornou: Permission denied (publickey). fatal: Could not read from remote repository.e assim.

Como eu resolvi isso:

  • Eu gerei uma chave usandossh-keygen -t rsa . A inserção de um nome para o arquivo de chave (quando solicitado) era inútil.
  • Eu poderia, então, adicionar a chave (para git) : ssh-add /Users/federico/.ssh/id_rsa, que retornou com sucessoIdentity added: /Users/myname/.ssh/id_rsa (/Users/myname/.ssh/id_rsa)
  • Adicionei a chave SSH ao github usando esta página de ajuda .
  • Tendo tentado todos os comandos na página de ajuda 'Permission denied publickey' do Github, apenas o ssh-add -lcomando funcionou / parecia útil (depois de executar as etapas anteriores), ele retornou minha chave com êxito. A última etapa mostra onde você deve verificar sua chave pública na sua página do GitHub. E este comando irá ajudar a verificar todas as suas chaves: ls -al ~/.ssh.

Então o comando push funcionou!

Espero que isso ajude ! Boa sorte a todos.


7

Execute os seguintes comandos:

ssh-keygen -t rsa
ssh-add /Users/*yourUserNameHere*/.ssh/id_rsa** 
pbcopy < ~/.ssh/id_rsa.pub**

Acesse sua conta do Github: https://github.com/settings/profile

1) Clique em: Chaves SSH e GPG

2) Nova chave SSH e colada lá

3) Adicionar chave SSH

Feito!


Sim - se você passou por outras etapas de criação do arquivo id_rsa.pub, copie e cole a linha pbcopy, que copia a chave da área de transferência e segue as instruções @zouhair - o github precisa conhecer sua chave. Especialmente se você estiver usando o 2FA.
davidrynn 28/02/19

Estou um pouco confuso porque os documentos atuais dizem que o git cria github_rsa / github_rsa.pub. Eu tenho ambos no meu diretório /.ssh e ainda assim não consigo "obter permissão". Criei cópias no mesmo diretório usando o id_rsa sem sucesso.
Mark Löwe

6

primeiro de tudo você precisa ir no seu diretório ssh
para este tipo seguindo o comando no seu terminal no mac ou o que você usar na janela

cd ~/.ssh

agora está no ssh
aqui você pode encontrar todos os arquivos / chaves ssh relacionados a todos os seus projetos. Agora, digite o seguinte comando para mostrar se há alguma chave ssh disponível

ls

isso mostrará todos os ssh disponíveis; no meu caso, havia dois
agora, você precisará iniciar um agente para adicionar um ssh nele. Para este tipo, seguindo o comando

eval "$(ssh-agent -s)"

Agora, por último, mas não menos importante, você adicionará um ssh neste tipo de agente, seguindo o comando

ssh-add ~/.ssh/your-ssh

substituir

substitua your-ssh pelo nome do arquivo ssh, que você obteve na segunda etapa do formulário de lista ls command


5

Isso pode causar, para qualquer novo terminal, a identificação do agente é diferente. Você precisa adicionar a chave privada do agente

$ ssh-add <path to your private key>

1

Um elemento adicional que percebi é que normalmente a pasta .ssh é criada na sua pasta raiz no Mac OS X / Users /. Se você tentar usar ssh -vT git@github.com de outra pasta, ocorrerá um erro mesmo que você tenha adicionado a chave correta.

Você precisa adicionar a chave novamente (ssh-add 'caminho correto para id_rsa') da pasta atual para se autenticar com êxito (supondo que você já tenha carregado a chave no seu perfil no Git)


1

Isso funcionou para mim:
chmod 700 .ssh chmod 600 .ssh/id_rsa chmod 644 .ssh/id_rsa.pub

Em seguida, digite este: ssh-add ~/.ssh/id_rsa


Eu não acho que a pergunta seja sobre ~/.sshpermissões. Ainda assim, você pode melhorar bastante sua resposta adicionando o comando completo (aqui chmod) e explicando o que isso faz e por que é necessário.
Robert

0

Depois de muito tempo, finalmente consegui resolver esse problema no Windows. Para mim, a variável Env do usuário GIT_SSH foi configurada para apontar para

"C: \ Arquivos de Programas (x86) \ WinScp \ PuTTY \ plink.exe"

que foi instalado junto com o WinScp. Eu mudei o apontador para usar o padrãoAlterei ssh.exe que vem com o git-scm "C: \ Arquivos de Programas \ Git \ usr \ bin \ ssh.exe"


0

Etapas para BitBucket:

se você não quiser gerar uma nova chave, SKIP ssh-keygen

ssh-keygen -t rsa 

Copie a chave pública para a área de transferência:

clip < ~/.ssh/id_rsa.pub

Faça logon no bucket de bits: vá para View Profile -> Settings -> SSH Keys (na guia Security) Clique em Add Key, cole a chave na caixa e adicione um título descritivo

Volte ao Git Bash:

ssh-add -l

Voce deveria pegar :

2048 SHA256:5zabdekjjjaalajafjLIa3Gl/k832A /c/Users/username/.ssh/id_rsa (RSA)

Agora: git pulldeve funcionar


0

Eu tive esse problema depois de restaurar um disco rígido de um backup.

Meu problema: eu podia verificar e ver meu controle remoto (usando o git remote -v), mas quando executei o git push origin master, ele retornou: Permissão negada (publickey). fatal: Não foi possível ler do repositório remoto.

Eu já tinha uma pasta SSH e chaves SSH, e adicioná-las via Terminal ( ssh-add /path/to/my-ssh-folder/id_rsa) adicionei com sucesso minha identidade, mas ainda não consegui enviar e recebi o mesmo erro. Gerar uma nova chave foi uma má ideia para mim, porque estava ligada a outras permissões muito seguras na AWS.

Acabou que o link entre a chave e meu perfil do Github havia quebrado.

Solução: Adicionar novamente a chave ao Github em Perfil> Configurações> Chaves SSH e GPG resolveu o problema.

Além disso: minha conta tinha a autenticação de dois fatores configurada. Nesse caso, se o Terminal solicitar credenciais, use seu nome de usuário - mas NÃO sua senha do Github. Para autenticação de dois fatores, você precisa usar seu código de autenticação (para mim, isso foi gerado pelo Authy no meu telefone e eu tive que copiá-lo no Terminal para o pw).

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.