it-swarm.com.de

git Push to Remote-Repository "Konnte nicht aus dem Remote-Repository lesen"

Ich habe eine Weile gesucht, aber ich kann keine Lösung für mein Problem finden.

Ich habe einen Server, zu dem ich über ssh eine Verbindung mit dem Benutzernamen git und einem lokalen Git-Repository herstellen kann.
Jetzt möchte ich mein lokales Repository auf ein neu erstelltes Repository auf dem Server verschieben.

Folgendes habe ich getan:

  • hat ein Git-Repository in /home/git/test.git erstellt
  • initialisierte das Repository als Bare
  • fügte das Remote-Repository auf dem lokalen Computer hinzu
    git remote add test ssh://[email protected]:/home/git/test.git
  • jetzt habe ich den push befehl ausgeführt:
    git Push test master

Ich bekomme immer die

fatal: could not read from remote repository

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

Ich arbeite auf einem lokalen Windows 7-Computer und möchte auf einen Linux-Server hochladen.
Ich kann mich mit dem Benutzer git über ssh anmelden. Ich habe auch versucht, dies als Benutzer root zu tun (um die Dinge einmal zum Laufen zu bringen), mit demselben Ergebnis.
Ich werde nie nach dem ssh password gefragt.

Ich weiß wirklich nicht, was ich falsch mache.
Bevor Sie dies als Duplikat bezeichnen, habe ich viel nach diesem Problem gesucht und keines schien über dasselbe Problem zu sprechen.

aktualisieren:

  • "which git" gibt/usr/bin/git zurück
  • PATH-Echo enthält/usr/bin
  • die Dateien id_rsa und id_rsa.pub sind alle eingerichtet und enthalten die Passphrase
  • ssh git @ serverIp das git-receive-pack funktioniert auch und gibt/usr/bin/git-receive-pack zurück
  • ssh git @ serverIp ls /home/git/test.git funktioniert
  • alle relevanten Verzeichnisse sind chmod 755
  • git ist Eigentümer des Repository
  • die Datei auth.log erhält keine neuen Einträge bei einem versuchten Push-Befehl
  • GIT_TRACE = 2 git Push-Test-Master gibt Folgendes zurück:

    'C:\Programme (x86)\PuTTY\plink.exe' '-batch' 'git @ serverIp' 'git-receive-pack' ''/home/git/test.git '' '' schwerwiegend: Aus dem Remote-Repository konnte nicht gelesen werden. Bitte stellen Sie sicher, dass Sie die richtigen Zugriffsrechte haben und das Repository existiert.

31
user1090755

In diesem Fall war die Verwendung von openssh über PuTTY der Schlüssel.


Ursprüngliche Antwort (Tipps zum Debuggen)

Ich kann mich über ssh mit dem Benutzer git anmelden.

Das heißt, das funktioniert:

ssh [email protected]

Sie haben eine HOME -Variable definiert und ssh öffentliche/private Schlüssel (id_rsa/id_rsa.pub) In %HOME%/.ssh/.

Diese Frage schlägt eine andere URL vor:

git remote set-url test [email protected]:/home/git/test.git

Stellen Sie sicher, dass Sie Ihr Git-Repo als Git erstellt haben (und nicht als Root, als Sie das Git-Konto erstellt haben, wie in diese Frage ).
ssh [email protected] "which git" Sollte den Pfad der ausführbaren Git-Datei zurückgeben.

Überprüfen Sie auch, ob für alle übergeordneten Verzeichnisse das entsprechende Bit x (execute) für den Benutzer git oder die Gruppe gitgroup mit ls -ld /home /home/git /home/git/test.git Gesetzt ist.
Weitere Informationen zu einem Git-Befehl erhalten Sie auch mit:

  • git Push --verbose
    oder:
  • GIT_TRACE=2 git Push test master

Wenn Sie einen privaten SSH-Schlüssel mit einem Passwort haben, ist es am besten, zuerst diese SSH-Befehle mit einem privaten SSH-Schlüssel zu testen, der nicht passwortgeschützt ist, um Überprüfen Sie, ob das Problem weiterhin besteht.
Oder Sie können diesen passwortgeschützten SSH-Schlüssel behalten, aber überprüfen Sie Ihren .bashrc Wie in dieser Antwort .


Überprüfen Sie bei Problemen mit der SSH-Verbindung (wo das Passwort von git benötigt wird) Folgendes:


In Ihrem Fall, da es mit ssh [email protected] (Interaktive sichere Shell) funktioniert, aber nicht mit git (die eine nicht interaktive sichere Shell öffnet), schauen Sie sich diesen Thread an, der Referenzen diese :

Wenn ssh mit einer Befehlszeile gestartet wird, wird eine nicht interaktive Shell ohne Anmeldung gestartet.
Allerdings verwendet ...bash in diesem Fall nicht $BASH_ENV, So dass das Setzen in ~/.ssh/environment (Z. B. auf /etc/profile) Nicht funktioniert. ' t helfen.
Was Bash macht, ist Source /etc/bashrc Und ~/.bashrc.

Stellen Sie sicher, dass /etc/profile Den Pfad für git definiert, da hier ein Nicht-Login-Konto verwendet werden könnte (das scheint zu sein) der Fall hier, da ssh [email protected] "which git" funktionierte, und ssh [email protected] "git --version" sollte auch).

Prüfen Sie aber auch das richtige Problem und testen Sie einen chmod 755 Auf /home, /home/git Und /home/git/test.git.

17
VonC

Ich persönlich hatte zwei verschiedene Probleme damit:

  1. plink (wird von git unter Windows verwendet) akzeptiert den privaten Schlüssel id_rsa nicht, da er im OpenSSH 2-Format vorliegt => Ich musste ihn konvertieren (mit puttygen) nach PuTTY eigenes .ppk Format und über Git Extensions "Remotes" Dialog anhängen

  2. Ich habe den Pfad zum Git-Ordner falsch angegeben, weil meine SSH-Sitzung chroot war (es könnte sich um ein falsches Word handeln) und als FTP "root" "/" Angegeben es war stattdessen "/home/www/username/".

Ich habe das alles verstanden, indem ich GIT TRACE=2 Wie oben beschrieben und auch procmon verwendet habe, um die genaue Befehlszeile für plink zu bestimmen und dann damit zu spielen und "-v "Option (" ausführlich ").

6
62mkv

Sie können Ihre SSH-Identitäten auch folgendermaßen überprüfen:

$ ssh-add -L

Ich hatte ein ähnliches Problem. In meinen Identitäten war ein falscher Schlüssel, weiß nicht mehr warum. Ich lösche nur alle meine Identitäten (möglicherweise müssen Sie Schlüssel erneut hinzufügen):

$ ssh-add -D  

Dann habe ich ohne Probleme Push/Pull gemacht.

6
Juan Matias

Setzen Sie die Umgebungsvariable GIT_SSH auf den vollständigen Pfad von TortoisePlink.exe (möglicherweise müssen Sie TortoiseGit dafür herunterladen) anstelle von PuTTYs plink.exe. Dies ermöglicht es dem Popup-Dialogfenster, nach Dingen zu fragen, d. H. Den Fingerabdruck zu bestätigen oder ein Passwort einzugeben. Wenn du benutzt plink.exe Über Git können Sie keine Antworten auf plink.exe-Eingabeaufforderungen eingeben, die, wenn sie angezeigt werden, den schwerwiegenden Fehler verursachen, den Sie gesehen haben.

0
konyak