git: fatal: Konnte nicht aus dem Remote-Repository lesen


356

Ich versuche, git mit http://danielmiessler.com/study/git/#website einzurichten , um meine Website zu verwalten.

Ich bin zum letzten Schritt in der Anleitung gekommen: Git Push Website + Master: Refs / Heads / Master

Ich arbeite mit der git ming32-Befehlszeile in 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.

Ein Problem hierbei kann sein, dass das Programm nach Bill@***.com sucht. Wenn ich über ssh eine Verbindung zu meiner Site herstelle, habe ich einen anderen Benutzernamen (sagen wir 'abc'). Vielleicht sollte dies also abc@***.com sein. Wenn ja, weiß ich nicht, wie ich das ändern soll oder ob ich unter einem Alias ​​pushen kann


1
Ich hatte das gleiche Problem, manchmal tritt dieser Fehler auf, wenn der Git-Server nicht erreichbar ist oder so etwas wie "interner Serverfehler" hat.
Morteza Ziyae

2
Schauen Sie sich zuerst die .git/configDatei an und sehen Sie, dass alles in Ordnung ist. Es hatte falsche Set-URL- und Ursprungswerte für mich.
Mixdev

Vielleicht würde dies das Problem lösen: help.github.com/articles/connecting-to-github-with-ssh
Guy Avraham


Kannst du mir die richtige Reihenfolge von .git / config und auch von .ssh / config zeigen? Weil ich ziemlich hart verwirrt bin.
Gumuruh

Antworten:


134

Sie können den Benutzernamen angeben, den SSH als Teil der URL Ihrer Fernbedienung an das Remote-System senden soll. Setzen Sie den Benutzernamen gefolgt von einem @vor den Namen des Remote-Hosts.

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

3
ps, gibt es eine Möglichkeit, das Passwort hinzuzufügen, damit ich es nicht ständig eingeben muss?
LDN

15
Bearbeiten Sie die Datei, .git/configdie den Remote-URL-Parameter hat
Sayanee

@ user61629: Ich weiß, dass ich zu spät zur Party komme, aber Sie sollten in Betracht ziehen, private / öffentliche Schlüsselpaare anstelle von Passwörtern zu verwenden.
code_dredd

Welcher Benutzername? Computer-Benutzername oder Github-Benutzername?
Agent Zebra

11
Für Github verwenden Sie immer den Benutzernamen git. Beispiel: git@github.com:mayoff/uiimage-from-animated-gif.gitGithub ermittelt Ihre Identität anhand des von Ihnen gesendeten SSH-Schlüssels.
Rob Mayoff

190

Ihr SSH-Schlüssel wurde höchstwahrscheinlich vom SSH-Agenten entfernt

ssh-add ~/.ssh/id_rsa

Dabei ist id_rsa ein SSH-Schlüssel, der mit Git Repo verknüpft ist


7
Das hat bei mir funktioniert! Ich habe lange versucht, meine ~ / .ssh / config-Datei so zu konfigurieren, dass verschiedene Schlüssel für verschiedene Hosts verwendet werden. Ich dachte, diese Datei sei das Problem. Am Ende muss der richtige Schlüssel für den richtigen Host verwendet worden sein, aber dieser Schlüssel wurde "entfernt". so ssh-add ~/.ssh/theKeyInQuestionhat mich gesichert und mit diesem Repo laufen, wusste nicht , dass der Schlüssel entfernt wird , oder was „entfernt“ auch Mittel , aber zumindest konnte ich wieder authentifiziert werden. SSH ist mir auch nach Monaten der Authentifizierung ein Rätsel. Probleme mit SSH-Agenten sind eine weitere Sache, die Sie beachten sollten!
Alex Bollbach

Vielen Dank. Dies funktionierte schließlich für mich, nachdem ich versucht hatte, die SSH-Schlüssel in meinem GitLab-Konto zu erstellen, zu löschen usw. .... Danke !!
Bms Bharadwaj

Dies löste mein Problem. Ich habe bereits den neu generierten SSH-Schlüssel auf dem Server hinzugefügt. Dieser Schlüssel muss hinzugefügt werden !!
Kashan

1
Das hat es für mich gelöst, ich verstehe nicht warum. Es hat früher funktioniert und plötzlich nicht. Gibt es einen Prozess, der den Schlüssel vom Agenten entfernt. Kann es bei einem Unfall passieren?
Miguel Stevens

Warum passiert das? Es funktionierte den ganzen Tag, aber am Abend hörte es auf zu arbeiten. Diese Antwort hat geholfen.
Andrey Semakin

130

Stellen Sie sicher, dass Sie die richtige URL haben .git/config

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

Wenn es Ihr erster Push ist, müssen Sie den richtigen Upstream einrichten

$ git push -u origin master

Sie können überprüfen, welcher Schlüssel verwendet wird:

$ ssh -vvv git@github.com

Die Antwort sollte ungefähr Folgendes enthalten:

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

Es ist auch möglich, Regeln für ssh in zu definieren ~/.ssh/config, z. B. basierend auf Aliasnamen:

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

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

Sie können für jeden Alias ​​eine Verbindung zu verschiedenen Ports herstellen, einen anderen Benutzernamen usw. verwenden.


1
Vielen Dank!! Irgendwann, als ich mein Repo geklont habe, urlwurde das auf https://github.com/user/repo.git(ohne git@github.com) gesetzt und weigerte sich daher, meinen SSH-Schlüssel zu verwenden. Vielleicht liegt es daran, dass ich es ursprünglich mit GIthub für Windows geklont habe (?)
Jedidja

Ich habe zu ändern hatte url = ssh://github.com/RaphaelBossek/dev-atlassian-jira-proman.gitzu url = ssh://git@github.com/RaphaelBossek/dev-atlassian-jira-proman.gitund es funktionierte wieder
Raphael Bossek

Verdammt, du bist großartig. Ich habe so viele andere Lösungen ausprobiert. Meine URL war https: auch :(
agrublev

Der -vvvHinweis war hilfreich für mich. Jetzt sehe ich, dass es heißt "Verbindung durch XXX.XXX.XXX.X Port 22 geschlossen".
Ryan

Ahhh, DeployHQ sagt "BitBucket hat derzeit kleinere Serviceprobleme. Weitere Informationen finden Sie auf der Statusseite . Status.bitbucket.org " Bingo.
Ryan

123

Ich hatte vor einiger Zeit das gleiche Problem ...

meine .git / config hatte

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

Ich habe es durch ersetzt

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

und es funktioniert jetzt :)


8
Wie ist das nicht höher eingestuft? git @ github funktioniert bei mir überhaupt nicht
hlitz

3
Wenn der Repo-Besitzer keine sshSchlüssel eingerichtet hat, tritt dieses Problem wahrscheinlich auf. Das Update wie angegeben ist, httpsstattdessen zu verwenden oder den Repo-Besitzer einzurichtenssh
RyanNerd

@smileham dies schaltet die entfernte Verbindung mit dem Repo von einer SSH-basierten Authentifizierung zu einem https-Protokoll (es wird bei Bedarf zur
Eingabe von

Das ist die richtige Antwort, es hat sofort für mich funktioniert.
Kingston Fortune

Für alle, die git remote set-url ...wie ich das Falsche verstanden haben ODER die dummerweise ein Big Case Alphabet in ihrem Benutzernamen haben (zB PeDro) wie ich (!), Sollte dies folgen. Es hat funktioniert :)
Pe Dro

23

Versuchen Sie, die Umgebungsvariable GIT_SSH mit zu entfernen unset GIT_SSH. Dies war die Ursache meines Problems.


1
Funktioniert .. Ich frage mich, woher ich die Umgebungsvariable GIT_SSH habe :)
StrangeLoop

1
Entfernen Sie unter Windows die Umgebungsvariable GIT_SSH aus dem Menü für erweiterte Optionen. Hat für mich gearbeitet.
Splitterzelle

Wie? Was schreibe ich dazu in das Terminal?
Agent Zebra

17

Stellen Sie sicher, dass ssh-agent ausgeführt wird, indem Sie den folgenden Befehl auf Ihrem Terminal ausführen:

eval $(ssh-agent -s)

Quelle: Github-Dokumentation


Dies behebt auch ein Problem für mich. Danke
Ahmad

Das hat es auch für mich behoben. Gibt es etwas, das ich tun sollte, um sicherzustellen, dass es in Zukunft läuft? Möchten Sie es als Eintrag in meine .zshrcDatei einfügen?
Brady Dowling

14

Dies wird normalerweise dadurch verursacht, dass der SSH-Schlüssel nicht mit der Fernbedienung übereinstimmt.

Lösungen:

  1. Gehen Sie zum Terminal und geben Sie den folgenden Befehl (Mac, Linux) ein, der durch Ihre E-Mail-ID ersetzt wird.

    ssh-keygen -t rsa -C "you@email.com"

  2. Kopieren Sie den generierten Schlüssel mit dem folgenden Befehl ab dem Wort ssh.

    cat ~ / .ssh / id_rsa.pub

  3. Fügen Sie es in Github, Bitbucket oder Gitlab Ihrer Fernbedienung ein.
  4. Speichern Sie es.

9

Ich hatte das gleiche Problem.

Dieser Fehler bedeutet, dass Sie Ihren Remote-URL-Speicherort nicht angegeben haben, auf den Ihr Code übertragen wird.

Sie können die Remote-URL auf zwei (hauptsächlich) Arten festlegen:

  1. Geben Sie die Remote-URL an, indem Sie den Befehl auf Git Bash ausführen.

    • Navigieren Sie zu Ihrem Projektverzeichnis

    • Öffnen Sie Git Bash

    • Befehl ausführen:

      • git remote set-url origin <https://abc.xyz/USERNAME/REPOSITORY.git>
  2. Erwähnen Sie die Remote-URL direkt in der Konfigurationsdatei

    • Navigieren Sie zu Ihrem Projektverzeichnis

    • Umzug in .git Ordner

    • Öffnen Sie die Konfigurationsdatei im Texteditor

    • Kopieren Sie die folgenden Zeilen und fügen Sie sie ein

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

Für detailliertere Informationen besuchen Sie diesen Link .



7

Ich hatte den gleichen Fehler. Die Lösung war folgende: Ich habe meine URL in korrigiert .git/config. Kopieren Sie das einfach von der HTTPS-Klon-URL. Das wäre so etwas:

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

Es funktionierte.


Wenn ich dies in meine Konfigurationsdatei unter Windows OS schrieb, trat der Fehler anders auf, es hieß ... "/c/Users/asus/.ssh/config: Zeile 5: Schlechte Konfigurationsoption: URL"
gumuruh

Die Verwendung von https über ssh funktioniert einwandfrei. Es werden Benutzername und Passwort
abgefragt

4

Eine weitere Problemumgehung:

Manchmal passiert mir das aufgrund von Netzwerkproblemen. Ich verstehe das Root-Problem nicht vollständig, aber der Wechsel zu einem anderen Subnetz oder die Verwendung von VPN löst es


Genau mein Fall. Ich wünschte, ich hätte diesen Kommentar gelesen. Nach einigen Stunden des Debuggens dachte ich an die Verwendung von VPN und es funktionierte.
Chaitanya Bapat

4

Wenn Sie Gitlab verwenden, müssen Sie sich möglicherweise anmelden und neue Bedingungen für Gitlab akzeptieren, bevor Sie versuchen, zu ziehen oder zu pushen.


Warum das Downvote? Am selben Tag löste ich mein Problem, es hatte etwas mit neuen Gitlab-Begriffen zu tun.
Marcelo Agimóvel

Bitte entfernen Sie Ihre Ablehnung. Dies ist eine gültige Antwort, die nach einer Änderung der Gitlab-Begriffe passiert ist. Das Akzeptieren neuer gitlab-Begriffe könnte das Problem lösen.
Marcelo Agimóvel

3

In Ihrer .git / config-Datei

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

Und einfach

git push YOUR_APP_NAME master:master 

3

In meinem Fall habe ich einen SSH-Schlüssel mit einem Passwort verwendet, um mich bei Github zu authentifizieren. Ich hatte den Festzug in Windows nicht richtig eingerichtet (nur in Cygwin). Die fehlenden Schritte bestanden darin, die Umgebungsvariable git_ssh auf plink.exe zu verweisen. Außerdem müssen Sie github.com in den plink unknown_hosts bringen.

   plink github.com
   y
   <then ctrl-c>

Hoffe das hilft!

Ich wünschte, Intellij hätte mir einen nützlicheren Fehler gegeben oder mich gebeten, das Passwort für den SSH-Schlüssel einzugeben.


3

Ich hatte einen falschen privaten SSH-Schlüssel für Bitbucket zusammen mit dem richtigen im SSH-Agenten.

Löschte zuerst alle Schlüssel

ssh-add -D

Dann fügte er genau den richtigen Schlüssel hinzu.

ssh-add ~/.ssh/id_rsa

2

In meinem Fall verwende ich das Unternehmensnetzwerk (ohne Internetverbindung) im Büro. Um Code von github abzurufen, setze ich den https-Proxy in gitbash und verwende dann https anstelle von ssh, um Code abzurufen. Es funktioniert einwandfrei. Wenn es jedoch um Push-Code geht, funktioniert der https-Proxy nicht. Wechseln Sie entweder zum Internet (mit Internetverbindung) oder setzen Sie den SSH-Proxy, um das Problem zu lösen.


2

Eigentlich habe ich viele Dinge versucht, damit es unter Win7 funktioniert, da ich das SSH-Exectun von native auf Build-it und rückwärts und den gleichen Fehler geändert habe. Durch Zufall ändere ich es in HTTPS in der Datei ".git / config" als:

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

und es hat endlich funktioniert. Vielleicht könnte es auch für Sie funktionieren.


2

Ich hatte das gleiche Problem und nach einer Weile sah ich, dass ich unter Root-Benutzer bin (mit sudo -s). Möge dies jemandem helfen.


Ich bestätige, dass dieser Fehler auch dann angezeigt wird, wenn Sie den SSH-Schlüssel auf Ihrem Computer und auf dem BitBucket eingerichtet haben, wenn Sie versuchen, 'git pull' mit einem 'sudo'-Befehl auszuführen.
ElectroBuddha

2

Wenn nach dem Befehl "git push origin master" der Fehler "Aus Remote-Repository konnte nicht gelesen werden" angezeigt wird, probieren Sie dies aus

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 

2

Ich hatte einen perfekt funktionierenden Git und plötzlich bekam ich diesen Fehler, als ich versuchte, zum Master zu pushen. Wie ich herausfand, lag es daran, dass der Repository-Host Probleme hatte.

Wenn Sie GitHub oder Bitbucket verwenden, können Sie den Status einfach unter überprüfen

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

Geben Sie hier die Bildbeschreibung ein


1

Ich hatte den gleichen Fehler, der mich zu dieser Antwort brachte, die mir nicht half. Ich habe zum ersten Mal versucht, ein neues "nacktes" Repository mit den folgenden Befehlen zu erstellen, um einen NTFS-Speicherort zu ermitteln:

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

Es stellte sich heraus, dass mein Problem darin bestand, die Schrägstriche anstelle der Schrägstriche am NTFS-Speicherort zu verwenden, wenn versucht wurde, den Ursprung hinzuzufügen, um den (neuen) verfolgten Upstream-Zweig festzulegen.

Ich musste den Ursprung entfernen mit:

git remote rm origin

Fügen Sie dann den Ursprung erneut mit den erwarteten Schrägstrichen hinzu

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

Hoffe das hilft jemandem in der Zukunft.


1

Ich habe diesen Fehler nach dem Computerwechsel. Ich verwende SourceTree mit Bitbucket.

Daher musste ich den von SourceTree generierten SSH-Schlüssel auf dem neuen Computer unter Bitbucket-Einstellungen> Sicherheit> SSH-Schlüssel hinzufügen, während ich mit meinem Bitbucket-Konto im Web verbunden war.


1

Ich habe dieses Problem durch einen Neustart des Terminals gelöst (öffne ein neues Fenster / eine neue Registerkarte).

Wenn Sie das zugrunde liegende Problem nicht wirklich verstehen wollen / müssen, ist die Testmethode einen Versuch wert, bevor Sie tiefer graben :)


0

Für diejenigen, die dieses Problem auf einem privaten Remote-Repo haben. Stellen Sie sicher, dass Sie die Xcode-Vereinbarung auf dem Remote-Server akzeptiert haben: Es hat Wochen gedauert, bis wir dieses Update gefunden haben

Verwenden Sie diesen Befehl über die Befehlszeile: sudo xcodebuild -license


0

Ich wollte nur mitteilen, dass ich eine einfache Lösung dafür gefunden habe:

Zugriff abgelehnt. Schwerwiegend: Konnte nicht aus dem Remote-Repository lesen. Stellen Sie sicher, dass Sie über die richtigen Zugriffsrechte verfügen und das Repository vorhanden ist.

Melden Sie sich einfach von gitlab ab und erneut an. Die Probleme sollten dann behoben werden.


0

Stellen Sie bei der Verwendung von Kitt / Festzug sicher, dass Sie nicht vergessen haben, dem Festzug den richtigen SSH-Schlüssel hinzuzufügen. Andernfalls wird dieser Fehler angezeigt. DUH



0

Gehen Sie zum MINGW32-Terminal und geben Sie diesen Befehl ein: git branch --set-upstream-to = origin / (Name des Zweigs)


0

Wenn Sie immer noch den gleichen Fehler erhalten, stellen Sie bitte sicher, dass in den Git-Einstellungen-> Registerkarte ssh-> zu verwendender ssh-Client openSSH eingestellt istGeben Sie hier die Bildbeschreibung ein


0

Nach meiner Erfahrung ist einer der Gründe, warum dieses Problem aufgetreten ist, dass Sie eine instabile Internetverbindung haben .

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.