git: fatal: não foi possível ler no repositório remoto


356

Estou tentando configurar o git com http://danielmiessler.com/study/git/#website para gerenciar meu site.

Eu cheguei à última etapa nas instruções: site git push + master: refs / heads / master

Estou trabalhando usando a linha de comando git ming32 no win7

$ git push website +master:refs/heads/master
Bill@***.com's password:
Connection closed by 198.91.80.3
fatal: Could not read from remote repository.

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

Um problema aqui pode ser que o programa esteja procurando por Bill@***.com. quando me conecto via ssh ao meu site, tenho um nome de usuário diferente (digamos 'abc'). então talvez isso deva ser abc@***.com. Nesse caso, não sei como mudar isso ou se posso enviar sob um pseudônimo


11
Eu tive o mesmo problema, às vezes esse erro ocorre quando o servidor git não está acessível ou tem algo como "erro interno do servidor".
— Morteza Ziyae 6/03/2014

2
Primeiro, observe o .git/configarquivo e veja se está tudo em ordem. Tinha valores de conjunto e origem incorretos para mim.
— mixdev #



você pode me mostrar a ordem correta do .git / config e também do .ssh / config ... porque estou confuso ou difícil.
— gumuruh

Respostas:


134

Você pode especificar o nome de usuário que o SSH deve enviar ao sistema remoto como parte do URL do seu controle remoto. Coloque o nome de usuário, seguido de um @, antes do nome do host remoto.

git remote set-url website abc@***.com:path/to/repo

3
ps, existe uma maneira de adicionar a senha para que eu não precise digitá-la?
— LDN

15
editar o arquivo .git/configque tem o parâmetro url remoto
— Sayanee

@ user61629: Sei que estou atrasado para a festa, mas considere usar pares de chaves públicas / privadas em vez de senhas.
— precisa saber é o seguinte

Qual nome de usuário? Nome de usuário do computador ou nome de usuário do github?
— Agente Zebra

11
Para o Github, você sempre usa o nome de usuário git. Exemplo: o git@github.com:mayoff/uiimage-from-animated-gif.gitGithub descobre sua identidade olhando para qual chave SSH você envia.
— Rob mayoff

190

Sua chave ssh provavelmente foi removida do agente ssh

ssh-add ~/.ssh/id_rsa

onde id_rsa é uma chave ssh associada ao git repo


7
Isso funcionou para mim! Passei muito tempo tentando configurar meu arquivo ~ / .ssh / config para usar chaves diferentes para hosts diferentes, pensei que esse arquivo era o problema. No final, ele deve estar usando a chave certa para o host certo, mas essa chave foi "removida". por ssh-add ~/.ssh/theKeyInQuestionisso, voltei a funcionar com este repositório, não sabia que a chave removida ou o que "removido" significa, mas pelo menos eu consegui me autenticar novamente. O SSH é um mistério total para mim, mesmo depois de meses lidando com problemas de autenticação. questões de agente ssh são mais uma coisa a ter em atenção!
— Alex Bollbach

Muito obrigado .. Isso finalmente funcionou para mim depois de tentar criar, excluir, etc. as chaves SSH na minha conta GitLab .... Obrigado!
— Bms bharadwaj

Isso resolveu meu problema. Eu já tenho a chave ssh recém-gerada adicionada no servidor. Essa chave precisa ser adicionada !!
— Kashan

11
Isso resolveu para mim, eu não entendo o porquê .. Costumava funcionar e de repente não, existe um processo que remove a chave do agente, isso pode acontecer por acidente?
— Miguel Stevens

Por que isso acontece? Funcionou o dia todo, mas à noite parou para funcionar. Esta resposta ajudou.
— Andrey Semakin

130

Verifique se você tem o URL correto .git/config

url = git@github.com:username/repo.git

Se for o seu primeiro impulso, você precisará configurar o upstream correto

$ git push -u origin master

Você pode verificar qual chave é usada por:

$ ssh -vvv git@github.com

A resposta deve conter algo como isto:

debug1: Next authentication method: publickey
debug1: Offering RSA public key: ~/.ssh/id_rsa
...
You've successfully authenticated, but GitHub does not provide shell access.

Também é possível definir regras para ssh in ~/.ssh/config, por exemplo, com base em aliases:

   Host github
      HostName github.com 
      User git
      IdentityFile "~/.ssh/id_rsa"

   Host git
      HostName github.com 
      User git
      IdentityFile "~/.ssh/some_other_id"

Você pode configurar a conexão a portas diferentes, usar nome de usuário diferente etc. para cada apelido.


11
Obrigado!! Em algum momento, quando eu clonei meu repositório, o urlfoi definido como https://github.com/user/repo.git(sem git@github.com) e, portanto, ele se recusou a usar minha chave SSH. Talvez seja porque eu clonado lo usando GitHub para Windows originalmente (?)
— Jedidja

Eu tive que mudar url = ssh://github.com/RaphaelBossek/dev-atlassian-jira-proman.gitpara url = ssh://git@github.com/RaphaelBossek/dev-atlassian-jira-proman.gite funcionou novamente
— Raphael Bossek

Droga, você é incrível. Eu tentei tantas outras soluções. Meu URL era https: também :(
— agrublev 7/17/17

A -vvvdica foi útil para mim. Agora vejo que está dizendo "Conexão fechada pela porta 22 do XXX.XXX.XXX.X".
— Ryan

Ah, o DeployHQ diz que "o BitBucket está enfrentando problemas menores de serviço. Verifique a página de status deles para obter mais informações. Status.bitbucket.org " Bingo.
— Ryan

123

Eu estava enfrentando o mesmo problema há um tempo atrás ...

meu .git / config tinha

url = git@github.com:manishnakar/polymer-demo.git

Substituí-o por

url = https://github.com/manishnakar/polymer-demo.git 

e funciona agora :)


8
como isso não é mais classificado? git @ github totalmente não funciona para mim
— hlitz

3
Se o proprietário do repo não configurou as sshchaves, você provavelmente terá esse problema. A correção, conforme indicado, deve ser usada httpsou ter o proprietário do ssh
— repositório

@smileham este interruptor a ligação distante com o repo de uma autenticação com base ssh para um protocolo HTTPS (que irá pedir para usr / palavra-passe, se necessário)
— Vincent Chalmel

esta é a resposta correta, funcionou instantaneamente para mim.
— Kingston Fortune

Para quem git remote set-url ...errou como eu OU que, tolamente, possui um alfabeto de maiúsculas e minúsculas no nome de usuário (por exemplo, PeDro) como eu (!), Siga isso. Funcionou :)
— Pe Dro

23

Tente remover a variável de ambiente GIT_SSH com unset GIT_SSH. Essa foi a causa do meu problema.


11
Obras .. Eu me pergunto onde eu tenho GIT_SSH variável de ambiente de :)
— StrangeLoop

11
Para o Windows, remova a variável de ambiente GIT_SSH do menu de opções avançadas. Trabalhou para mim.
— SplinterCell

Quão? O que escrevo no terminal para fazer isso?
— Agent Zebra

17

Verifique se o ssh-agent está em execução executando o seguinte comando no seu terminal:

eval $(ssh-agent -s)

Fonte: documentação do Github


Isso corrige um problema para mim também. Obrigado
— Ahmad

Isso corrigiu para mim também. Existe algo que eu deveria estar fazendo para garantir que esteja em execução no futuro? Como colocá-lo como uma entrada no meu .zshrcarquivo?
— Brady Dowling

14

Isso geralmente é causado porque a chave SSH não corresponde ao controle remoto.

Soluções:

  1. Vá para o terminal e digite o seguinte comando (Mac, Linux) substitua pelo seu ID de email.

    ssh-keygen -t rsa -C "você@email.com"

  2. Copie a chave gerada usando o seguinte comando, iniciando na palavra ssh.

    cat ~ / .ssh / id_rsa.pub

  3. Cole-o no github, bitbucket ou gitlab respectivo do seu controle remoto.
  4. Salve isso.

9

Eu tive o mesmo problema.

Esse erro significa que você não especificou seu local de URL remoto no qual o seu código será enviado.

Você pode definir o URL remoto de 2 (principalmente) maneiras:

  1. Especifique o URL remoto através do comando de execução no Git Bash.

    • Navegue para o diretório do seu projeto

    • Open Git Bash

    • Executar comando:

      • git remote set-url origin <https://abc.xyz/USERNAME/REPOSITORY.git>
  2. Mencione o URL remoto direto no arquivo de configuração

    • Navegue para o diretório do seu projeto

    • Mover para a pasta .git

    • Abrir arquivo de configuração no editor de texto

    • Copie e cole abaixo das linhas

      • [remote "origin"] url = https://abc.xyz/USERNAME/REPOSITORY.git fetch = +refs/heads/*:refs/remotes/origin/*

Para informações mais detalhadas, visite este link .



7

Eu tive o mesmo erro. A solução foi a seguinte: Corrigi meu URL .git/config. Apenas copiei isso do URL do clone HTTPS. Isso seria algo assim:

url = https://github.com/*your*git*name*/*your*git*app*.git

Funcionou.


se eu escrevi isso no meu arquivo de configuração no Windows OS, o erro surgiu de forma diferente, dizendo ... "/c/Users/asus/.ssh/config: linha 5: Opção de configuração
— incorreta

usando https sobre ssh é um belo trabalho, ele pede nome de usuário e senha
— Kiran

4

Outra solução alternativa:

Às vezes isso acontece comigo devido a problemas de rede. Não entendo completamente o problema raiz, mas mudar para uma sub-rede diferente ou usar VPN resolve o problema


Exatamente o meu caso. Gostaria de ter lido este comentário. Após algumas horas de depuração, pensei em usar VPN e funcionou.
— Chaitanya Bapat 05/04/19

4

Se você usa o Gitlab, pode precisar fazer login e aceitar os novos termos do Gitlab, antes de tentar puxar ou empurrar.


Por que o voto negativo? No mesmo dia em que resolvi meu problema, isso tinha algo a ver com os novos termos do gitlab.
— Marcelo Agimóvel

Por favor, remova o seu voto negativo. Esta é uma resposta válida. Ocorreu após a alteração dos termos do gitlab. Aceitar novos termos do gitlab pode resolver o problema.
— Marcelo Agimóvel

3

No seu arquivo .git / config

[remote "YOUR_APP_NAME"]
    url = git@heroku.com:YOUR_APP_NAME.git
    fetch = +refs/heads/*:refs/remotes/YOUR_APP_NAME/*

E simplesmente

git push YOUR_APP_NAME master:master 

3

No meu caso, eu estava usando uma chave ssh com uma senha para autenticar no github. Eu não havia configurado o concurso corretamente no Windows (apenas no cygwin). As etapas ausentes foram apontar a variável de ambiente git_ssh para plink.exe. Além disso, você precisa colocar o github.com no link conhecido_hosts.

   plink github.com
   y
   <then ctrl-c>

Espero que isto ajude!

Eu certamente gostaria que o intellij tivesse me dado um erro mais útil ou, melhor ainda, me pedisse para digitar a senha da chave ssh.


3

Eu tinha uma chave privada ssh errada para o Bitbucket, juntamente com a chave certa no agente ssh.

Todas as chaves foram excluídas primeiro

ssh-add -D

Em seguida, adicionou apenas a tecla certa.

ssh-add ~/.ssh/id_rsa

2

No meu caso, estou usando a rede corporativa (sem conexão à Internet) no escritório. Para obter o código do github, defino o proxy https no gitbash e, em seguida, uso https em vez do ssh para obter o código, ele funciona bem. No entanto, quando se trata de código push, o proxy https não funciona. Portanto, mude para a rede da Internet (com conexão à Internet) ou defina o proxy ssh para resolver o problema.


2

Na verdade, eu tentei várias coisas para fazê-lo funcionar no Win7, desde que alterei o exectun SSH do nativo para build-it e para trás e o mesmo erro. Por acaso, eu mudo para HTTPS no arquivo ".git / config" como:

[remote "origin"]
        url = https://github.com/user_name/repository_name.git
        fetch = +refs/heads/*:refs/remotes/origin/*

e finalmente funcionou. Então talvez possa funcionar para você também.


2

Eu tive o mesmo problema e depois de um tempo eu vi que estava sob o usuário root (com sudo -s). Que isso ajude para alguém.


Confirmo que mesmo quando você configurou a chave ssh na sua máquina e no BitBucket, ele ainda exibirá esse erro se você tentar executar 'git pull' com um comando 'sudo'.
— ElectroBuddha 19/07/19

2

Se após o comando "git push origin master" você vir o erro "não foi possível ler do repositório remoto", tente isso

1.ssh-keygen -t rsa -b 4096 -C "youremail"
2.eval $(ssh-agent -s)
3.ssh-add ~/.ssh/id_rsa
4.clip < ~/.ssh/id_rsa.pub(it copies the ssh key that has got generated)
5.then go to your remote repository on github and goto settings-> SSH and GPG keys ->new SSH key ->enter any title and paste the copied SSH key and save it
6. now give git push origin master 


1

Eu tive o mesmo erro, o que me levou a essa resposta que não me ajudou. Eu estava tentando criar um novo repositório "bare" pela primeira vez, usando os comandos abaixo para rastrear para um local NTFS:

cd myrepository
git init --bare \\myserver.mycompany.local\myrepository.git
git init
git status
git add .
git status
git commit -m "Initial Commit"
git remote add origin \\myserver.mycompany.local\myrepository.git
git push -u origin master
git status

Meu problema acabou sendo usar as barras invertidas em vez de barras no local NTFS ao tentar adicionar a origem para definir o (novo) ramo upstream rastreado.

Eu tive que remover a origem usando:

git remote rm origin

Em seguida, adicione a origem novamente usando as barras avançadas esperadas

git remote add origin //myserver.mycompany.local/myrepository.git

Espero que isso ajude alguém no futuro.


1

Eu tenho esse erro depois de trocar de computador. Estou usando o SourceTree com o Bitbucket.

Então, tive que adicionar a chave SSH gerada pelo SourceTree, no novo computador, em Configurações do Bitbucket> Segurança> Chaves SSH, enquanto estava conectada à minha conta do Bitbucket na web.


1

Resolvi esse problema reiniciando o terminal (abra uma nova janela / guia).

Portanto, se você realmente não quer / precisa entender o problema subjacente, vale a pena tentar o método de teste antes de se aprofundar :)


0

Para quem tem esse problema em um repositório remoto remoto. verifique se você aceitou o contrato Xcode no servidor remoto: levamos semanas para descobrir essa correção

Use este comando na linha de comando: sudo xcodebuild -license


0

Eu só queria compartilhar que encontrei uma solução fácil para isso:

Acesso negado. fatal: Não foi possível ler do repositório remoto. Verifique se você possui os direitos de acesso corretos e se o repositório existe.

basta sair do gitlab e entrar novamente. Os problemas devem ser corrigidos.


0

Ao usar o putty / pageant, verifique se você não esqueceu de adicionar a chave SSH correta ao pageant; caso contrário, esse erro será exibido. DUH



0

Vá para o terminal MINGW32, coloque este comando: git branch --set-upstream-to = origin / (branch Name)


0

Se você ainda estiver recebendo o mesmo erro, verifique se nas configurações do git-> ssh tab-> o cliente ssh a usar está definido como openSSHinsira a descrição da imagem aqui


0

De acordo com a minha experiência, um dos motivos pelos quais esse problema ocorreu é porque você tem uma conexão à Internet instável .

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.