Git-Permissão negada (publickey)
acabei de tentar
git clone [email protected]:cakebook.git
mas isso dá-me este erro:
Initialized empty Git repository in `/Users/username/Documents/cakebook/.git/`
Permission denied (publickey).
fatal: The remote end hung up unexpectedly
O que me está a escapar?Eu também tentei fazer
ssh-keygen
sem senha, mas ainda assim o mesmo erro.
30 answers
Esta informação está a trabalhar no theChaw, mas pode ser aplicada a todos os outros repositórios git que suportam as autenticações da 'pubkey' do SSH. (Ver gitolite , gitlab ou github, por exemplo.)
Primeiro comece por configurar o seu próprio par de chaves público/privado. Presente pode usar DSA ou RSA, então basicamente qualquer chave que você configurar vai funcionar. Na maioria dos sistemas você pode usar o ssh-keygen.
É isso que deves fazer bem em Clonar e fazer o check-out.
- primeiro você vai querer cd em seu .directório ssh. Abrir o terminal e correr:
A seguir, tem de copiar isto para a sua área de transferência.
cd ~/.ssh && ssh-keygen
- em execução de OS X:
cat id_rsa.pub | pbcopy
- em execução no Linux:
cat id_rsa.pub | xclip
- no Windows (via Cygwin/Git Bash) executar:
cat id_rsa.pub | clip
- adicione a sua chave à sua conta através do site.
Finalmente, prepara o teu .gitconfig.
git config --global user.name "bob"
git config --global user.email bob@...
(não se esqueça de reiniciar a sua linha de comandos para se certificar que a configuração é recarregada)
Mais informações podem ser encontradas em https://help.github.com/articles/generating-ssh-keys (graças a @Lee Whitney)
A solução de problemas mais extensa e mesmo a fixação automática podem ser feitas com:
ssh -vT [email protected]
Fonte: https://help.github.com/articles/error-permission-denied-publickey/
Este erro pode acontecer quando você está acessando o URL SSH (Ler / Escrever) em vez do URL Apenas para leitura Git, mas você não tem acesso de escrita a esse repo.
Às vezes você só quer clonar o seu próprio repo, por exemplo, implantar para um servidor. Neste caso, você só precisa de acesso apenas para leitura. Mas como isso é o seu próprio repo, o GitHub pode mostrar o URL de SSH se for essa a sua preferência. Nesta situação, se a chave pública do seu host remoto não estiver nas suas chaves SSH do GitHub, o seu acesso será negado, o que se espera que aconteça.
Um caso equivalente é quando você tenta clonar o repo de outra pessoa para o qual você não tem acesso de Escrita com URL SSH.
Numa palavra, se a sua intenção é clonar apenas um repo, use o URL HTTPS (https://github.com/{user_name}/{project_name}.git
) em vez do URL SSH ([email protected]:{user_name}/{project_name}.git
), o que evita a validação (desnecessária) da chave pública.
Actualização: o GitHub está a mostrar os HTTPS como o protocolo por omissão e esta jogada poderá provavelmente reduzir o possível uso indevido de URLs SSH.
A ajuda do github link ajudou-me a resolver este problema. Parece que a chave ssh não foi adicionada ao agente ssh. Foi isto que acabei por fazer.
comando 1:
Assegurar que o agente ssh está activo. O comando inicia o agente ssh em segundo plano:
eval "$(ssh-agent -s)"
comando 2:
Adicione a sua chave SSH ao agente ssh:
ssh-add ~/.ssh/id_rsa
Note que (pelo menos para alguns projectos) deve ter uma conta github com uma chave SSH.
Veja as chaves listadas no seu agente de autenticação (ssh-add-l)
(se não vir nenhuma, adicione uma das suas chaves existentes com o SSH-add /path / to/your /key (eg: ssh-add~/.ssh / ID_ RSA))
(se você não tem nenhuma chave, primeiro crie uma. Ver: http://rcsg-gsir.imsb-dsgi.nrc-cnrc.gc.ca/documents/internet/node31.html ou Apenas google ssh-keygen)
Para verificar se tem uma chave associada à sua conta github:
Vá para: https://github.com/settings/ssh
Você deve ver pelo menos uma chave com uma chave de hash correspondente a uma das hashs que você viu quando escreveu SSH-add-l apenas um minuto atrás.
Se não o fizer, adicione um e tente de novo.ssh-add ~/.ssh/id_rsa
Tive uma situação ligeiramente diferente, estava ligado a um servidor remoto e estava a usar o git no servidor, quando executei qualquer comando git recebi a mesma mensagem
Permission denied (publickey).
fatal: The remote end hung up unexpectedly
A forma como o corrigi foi alterando o ficheiro /etc/ssh_ config no meu Mac. de
ForwardAgent no
A
ForwardAgent yes
Tenho o mesmo relatório de erro.
Corrigido com a utilização de HTTP em alternativa. Já que não quero definir "chaves SSH" para um PC de teste.
Mudar o URL para HTTP ao clonar:
git clone https://github.com/USERNAME/REPOSITORY.git
O meu problema é um pouco diferente: tenho um conjunto de URL ao adicionar um repo local existente ao remoto, usando:
git remote add origin ssh://github.com/USERNAME/REPOSITORY.git
Para o corrigir, repõe o URL em HTTP:
git remote set-url origin https://github.com/USERNAME/REPOSITORY.git
BTW, pode verificar o seu URL usando o comando:
git remote -v
origin https://github.com/USERNAME/REPOSITORY.git (fetch)
origin https://github.com/USERNAME/REPOSITORY.git (push)
Espero que isto ajude alguém como eu. : D
Encontrei o mesmo problema porque pensava-se que a diferença entre SSH e HTTPS é
https://github.com/USERNAME/REPOSITORY.git
ssh://github.com/USERNAME/REPOSITORY.git
Então eu mudei de HTTPS para SSH apenas mudando https://
para ssh://
nada no fim do url foi alterado.
https://github.com/USERNAME/REPOSITORY.git
[email protected]:USERNAME/REPOSITORY.git
O que significa que mudei ssh://github.com/USERNAME/REPOSITORY.git
para [email protected]:USERNAME/REPOSITORY.git
funciona.
Primeiro Passo: Verificar se já temos a chave SSH pública.
-
Abrir Terminal.
- indique
ls -al ~/.ssh
para ver se as chaves SSH existentes estão presentes:
Verifique a lista de directórios para ver se já tem uma chave SSH pública.O público padrão é um dos seguintes d_dsa.pub, id_ecdsa.pub, id_ed25519.pub, id_rsa.pub
Se não encontrar então vá para o PASSO 2 caso contrário siga o Passo 3
Passo 2: Gerar a chave pública de SSH
-
Abrir Terminal.
- indique o comando followong consigo um endereço de E-mail válido que utiliza para o github
ssh-keygen -t rsa -b 4096 -C "[email protected]"
- ver a seguir no terminal
Generating public/private rsa key pair
. Quando pedir para"Enter a file in which to save the key,"
carregar em Enter. Isto aceita a localização predefinida do ficheiro. Quando ele pedir paraEnter a file in which to save the key (/Users/you/.ssh/id_rsa): [Press enter]
basta carregar em enter novamente. Em a linha de comandos, escreva uma frase-senha segura. -
Enter passphrase (empty for no passphrase): [Type a passphrase]
carregue em enter se não quiserEnter same passphrase again: [Type passphrase again]
carregue em enter novamente
id_rsa.pub
Passo 3: Adicionar a sua chave de SSH ao agente de ssh
- Tipo Interminal
eval "$(ssh-agent -s)"
Adicione a sua chave SSH ao agente ssh. Se estiver a utilizar um SSH existente
em vez de gerar uma nova chave SSH, terá de substituir
ID_ RSA no comando com o nome da sua chave privada existente
arquivo. Indique isto comando
$ ssh-add -K ~/.ssh/id_rsa
Agora copia a chave SSH e adiciona-a também à tua conta GitHub
- no terminal indique este comando com o seu nome de ficheiro ssh
pbcopy < ~/.ssh/id_rsa.pub
Isto irá copiar o ficheiro para a sua área de transferência Agora abra a sua conta do github vá para configuração > teclas SSH e GPG > nova tecla ssh indique o Título e cole a chave da área de transferência e grave-a. Pronto, já acabaste.
No Windows, certifique-se que todos os seus aplicativos concordam em casa. A Msys não o fará por ti. Tive de definir uma variável de ambiente porque o ssh e o git não conseguiram chegar a acordo .era o directório do ssh.
As instruções básicas do GIT não faziam uma referência à chave do SSH. Seguindo alguns dos links acima, eu encontrei uma página de Ajuda git que explica, passo a passo, exatamente como fazer isso para vários sistemas operacionais (o link irá detectar o seu SO e redirecionar, de acordo com isso):
Http://help.github.com/set-up-git-redirect/
Ele percorre tudo o que é necessário para o GITHub e também dá explicações detalhadas como " por que adicionar uma frase-senha ao criar um RSA chave."Pensei em publicá-lo, caso ajude outra pessoa...
%HOMEDRIVE%
mudou recentemente, o git não sabe onde procurar a sua chave, e assim todas as coisas de autenticação.
Tenta correr. Tome nota da localização do identity file
. Para mim, isso estava apontando não para o meu normal {[[4]} mas sim para uma unidade de rede, por causa de uma mudança para variáveis de ambiente empurradas ao nível da rede.
A solução? Uma vez que o meu novo %HOMEDRIVE%
tem as mesmas permissões que os meus ficheiros locais, acabei de mudar o meu .a pasta ssh ali, e acabou-se.
Uma das maneiras mais fáceis
Vá para o terminal -
git push <Git Remote path> --all
1-abrir o terminal e ir para o utilizador [Ver imagem em anexo]
2 aberto .SSH pasta e certifique-se de que não tem nenhum arquivo como ID_ RSA ou id_rsa.pub caso contrário, às vezes não irá reescrever adequadamente os ficheiros
3-git -- version [verificar a instalação e a versão do git]
4-git config -- global user.e-mail"your email id"
5 - git config -- global user.name "o teu nome"
6-git config -- list [certifique-se que tem definir o seu nome e E-mail]7-cd ~/.ssh
8-ssh-keygen, pede para gravar o ficheiro, permite-o
9 - gato ~/.ssh / ID_ RSA.pub [acesse a sua chave pública e copie a chave para a configuração do gerrit]
Nota : não deve usar o comando sudo com o Git. Se você tem uma razão muito boa que você deve usar sudo, em seguida, certifique-se de que você está usando com cada comando (provavelmente é apenas melhor usar su para obter uma shell como raiz nesse ponto). Se gerar teclas SSH sem o sudo e então tente usar um comando como o sudo git push, você não estará usando as mesmas chaves que você gerou
Para além da resposta do Rufinus, o atalho para copiar a sua tecla ssh para a área de transferência em Windows é:
type id_rsa.pub | clip
Refs:
Se tiver mais do que uma chave poderá ter de fazer
ssh-add private-keyfile
ssh-keygen -t rsa -b 4096 -C "[email protected]"
Gera a chave SSH. Abra o arquivo e copie o conteúdo. Vá para a página de configuração do GitHub, e clique na tecla SSH . Carregue em Adicionar uma nova tecla SSH e cole aqui o conteúdo. É isso:) você não deve ver o problema novamente.
Eu estava a obter um erro similar de permissão negada (publickey) ao tentar executar um makefile.
Como uma alternativa aos passos SSH acima, você pode instalar o GitHub nativo para a aplicação Mac.
Carregue em transferir o GitHub para o Mac a partir de - https://help.github.com/articles/set-up-git#platform-mac
Assim que terminar a configuração com a sua conta de hub do git (também instalei as ferramentas da linha de comandos do Git, mas não sabe se este passo é necessário ou então recebi um email -
[GitHub] uma nova chave pública foi adicionada à sua conta
E o meu erro foi corrigido.Não consegui criar a pasta em que estava a clonar automaticamente sem pré-configurar o comando de clones do git com o sudo. Quando fiz isso, no entanto, as minhas chaves ssh onde não estão a ser devidamente referenciadas.
Para corrigi-lo, defini permissões via chmod na pasta-mãe que queria conter o meu clone para poder escrever para ele. Depois fiz o git clone sem um prefixo sudo. Então funcionou! Alterei as permissões voltamos depois disso. Terminar.
Estava a receber este erro porque gerei as teclas ssh com o e-mail errado. Fui capaz de me conectar usando ssh, mas não usando git. A solução era regenerar as chaves usando o endereço de E-mail principal da minha conta github.
Pbcopy
- copie a chave SSH para a área de transferência, retorne ao portal web.
- no campo chave SSH, cole a sua chave SSH.
- no campo Nome, indique o nome da chave. Salve .
ssh -i [your id_rsa path] -T [email protected]
A solução mais fácil para isto, quando você está tentando empurrar para um repositório com um nome de usuário diferente é:
git remote set-url origin https://[email protected]/USERNAME/PROJECTNAME.git
Este estranho erro, no meu caso, foi um sintoma de {[[0]} incorrectamente nomear a chave para a qual era necessária uma senha.
Sigo os passos descritos aqui, e introduzo a senha através do terminal. O erro, conhecido como a interface GUI confusa, foi resolvido. Ver: https://askubuntu.com/questions/3045/how-to-disable-gnome-keyring
No meu caso, reinstalei o ubuntu e o nome de utilizador foi alterado em relação ao anterior. Neste caso, a chave de ssh gerada também difere da anterior.
O problema resolvido apenas copiando a chave pública ssh atual, no repositório. A chave estará disponível no site do seu utilizador/home/.ssh/id_rsa.pub
cp ~/.ssh/github_rsa ~/.ssh/id_rsa
Por alguma razão, o meu git parou para encontrar a chave privada no ficheiro github_rsa
. Isto aconteceu num acordo de recompra específico. Quero dizer que noutros repositórios o git continuava a trabalhar normalmente.
Acho que é um insecto.
Acho que este comportamento está a correr.ssh -vT [email protected]
Use a ligação ssh do Github mas certifique-se de não a adicionar com ssh apenas use o que a página ssh do Git hub lhe dá para clonar o seu repo.
Consegui ultrapassar este problema seguindo os passos abaixo no meu sistema ubuntu. Enquanto eu estava experimentando com passwordless ssh para o sistema.
Sudo vi /etc / ssh / sshd_ config
1) Commented below : # Muda para o no para desactivar senhas de texto limpadas por túnel PasswordAuthentication sim PasswordAuthentication no - - - - > comentou isto.
2) em seguida, reiniciou o servidor de sshd como abaixo.
Service sshd restart