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

LDN
fonte
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 #
Talvez isso resolveria o problema: help.github.com/articles/connecting-to-github-with-ssh
Guy Avraham
Um problema relacionado: stackoverflow.com/questions/10127818/…
Anton Tarasenko
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
Rob Mayoff
fonte
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 [email protected]: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

Johnny Cage
fonte
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 = [email protected]: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 [email protected]

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.

Tombart
fonte
11
Obrigado!! Em algum momento, quando eu clonei meu repositório, o urlfoi definido como https://github.com/user/repo.git(sem [email protected]) 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://[email protected]/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 = [email protected]:manishnakar/polymer-demo.git

Substituí-o por

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

e funciona agora :)

Manish Nakar
fonte
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.

Scott Lindner
fonte
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

user3362907
fonte
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.
Bastin Robin
fonte
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 .

Pratik Patel
fonte
8

Depois de fazer algumas pesquisas, finalmente consegui uma solução para isso, você declarou uma variável de ambiente para o caminho plink.exe. Portanto, se você remover esse caminho, reabra o git bash e tente clonar através do SSH.

Consulte este link

http://sourceforge.net/p/forge/site-support/2959/#204c

Mohammed Nasiruddin
fonte
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.

tan75
fonte
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

kip2
fonte
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.

Marcelo Agimóvel
fonte
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 = [email protected]:YOUR_APP_NAME.git
    fetch = +refs/heads/*:refs/remotes/YOUR_APP_NAME/*

E simplesmente

git push YOUR_APP_NAME master:master 
user1982195
fonte
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.

Jeff Hoye
fonte
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
Para sempre
fonte
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.

wenwen
fonte
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.

Ignacio lucatero
fonte
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.

Jean-Luc Barat
fonte
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 
sushmitha
fonte
2

Eu tinha um ótimo trabalho e, de repente, recebi esse erro quando tentei empurrar para o mestre. Como descobri, era porque o host do repositório tinha problemas.

Se você estiver usando GitHub ou Bitbucket, poderá verificar facilmente o status em

https://status.github.com/messages ou https://status.bitbucket.org/

insira a descrição da imagem aqui

Adão
fonte
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.

Mike
fonte
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.

eby
fonte
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 :)

mraxus
fonte
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

Joseph Bolade Caxton-Idowu
fonte
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.

nechama b
fonte
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

misture
fonte
0

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

Juned Ahmed
fonte
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

Anil Kumar B
fonte
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 .

Marwan Salim
fonte