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.