git: fatal: Nie można odczytać ze zdalnego repozytorium


356

Próbuję skonfigurować git z http://danielmiessler.com/study/git/#website do zarządzania moją witryną.

Doszedłem do ostatniego kroku instrukcji: git push website + master: refs / heads / master

Pracuję przy użyciu wiersza polecenia git ming32 w 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.

Jednym z problemów może być to, że program szuka adresu Bill@***.com. kiedy łączę się przez ssh z moją witryną, mam inną nazwę użytkownika (powiedzmy „abc”). więc może powinien to być abc@***.com. Jeśli tak, to nie wiem, jak to zmienić lub czy mogę pchać się pod aliasem


1
Miałem ten sam problem, czasami ten błąd występuje, gdy serwer git jest nieosiągalny lub występuje coś takiego jak „wewnętrzny błąd serwera”.
Morteza Ziyae

2
Najpierw spójrz na .git/configplik i sprawdź, czy wszystko jest w porządku. Miał dla mnie niewłaściwe wartości adresu URL i pochodzenia.
mixdev



czy możesz mi pokazać prawidłową kolejność .git / config, a także .ssh / config ... bo jestem zdezorientowany, ale trudno.
gumuruh

Odpowiedzi:


134

Możesz podać nazwę użytkownika, którą SSH powinien wysyłać do zdalnego systemu jako część adresu URL twojego zdalnego. Umieść nazwę użytkownika, po której następuje @, przed zdalną nazwą hosta.

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

3
ps, czy istnieje sposób na dodanie hasła, więc nie muszę go wpisywać?
LDN

15
edytuj plik, .git/configktóry ma parametr zdalnego
adresu

@ user61629: Wiem, że spóźniłem się na imprezę, ale powinieneś rozważyć użycie par kluczy prywatny / publiczny zamiast haseł.
code_dredd 22.04.16

Która nazwa użytkownika? Nazwa użytkownika komputera lub nazwa użytkownika github?
Agentka Zebra,

11
W przypadku Github zawsze używasz nazwy użytkownika git. Przykład: git@github.com:mayoff/uiimage-from-animated-gif.gitGithub rozpoznaje twoją tożsamość, sprawdzając, jaki klucz SSH wysyłasz.
rob mayoff

189

Twój klucz ssh najprawdopodobniej został usunięty z agenta ssh

ssh-add ~/.ssh/id_rsa

gdzie id_rsa to klucz ssh powiązany z git repo


7
To zadziałało dla mnie! Spędziłem dużo czasu próbując skonfigurować mój plik ~ / .ssh / config tak, aby używał różnych kluczy dla różnych hostów, myślałem, że ten plik jest problemem. W końcu musiał używać właściwego klucza dla odpowiedniego hosta, ale ten klucz został „usunięty”. więc ssh-add ~/.ssh/theKeyInQuestionprzywróciłem mnie do działania z tym repozytorium, nie wiedziałem, że klucz został usunięty, ani co to znaczy „usunięto”, ale przynajmniej udało mi się ponownie uwierzytelnić. SSH jest dla mnie całkowitą tajemnicą nawet po miesiącach rozwiązywania problemów z uwierzytelnianiem. Problemy z agentem ssh to jeszcze jedna rzecz!
Alex Bollbach,

Wielkie dzięki .. To w końcu zadziałało dla mnie po próbie utworzenia, usunięcia itp. Kluczy SSH na moim koncie GitLab .... Dzięki !!
Bms bharadwaj

To rozwiązało mój problem. Mam już nowo wygenerowany klucz ssh dodany na serwerze. Ten klucz należy dodać !!
Kashan,

1
Dla mnie to rozwiązało, nie rozumiem, dlaczego ... Kiedyś działało i nagle nie, czy istnieje proces, który usuwa klucz z agenta, czy może się to zdarzyć przypadkiem?
Miguel Stevens,

Dlaczego tak się dzieje? Działało przez cały dzień, ale wieczorem przestało działać. Ta odpowiedź pomogła.
Andrey Semakin,

130

Upewnij się, że masz poprawny adres URL .git/config

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

Jeśli jest to twój pierwszy krok, musisz ustawić poprawny upstream

$ git push -u origin master

Możesz sprawdzić, który klucz jest używany przez:

$ ssh -vvv git@github.com

Odpowiedź powinna zawierać coś takiego:

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

Możliwe jest również zdefiniowanie reguł dla ssh ~/.ssh/config, np. Na podstawie aliasów:

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

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

Możesz ustawić połączenie z różnymi portami, użyć innej nazwy użytkownika itp. Dla każdego aliasu.


1
Dziękuję Ci!! W pewnym momencie, kiedy sklonowałem moje repozytorium, urlustawiono je na https://github.com/user/repo.git(bez git@github.com), więc odmówiło użycia mojego klucza SSH. Może to dlatego, że pierwotnie sklonowałem go za pomocą GIthub na Windows (?)
Jedidja

Miałem do zmiany url = ssh://github.com/RaphaelBossek/dev-atlassian-jira-proman.gitdo url = ssh://git@github.com/RaphaelBossek/dev-atlassian-jira-proman.giti pracował ponownie
Raphael Bossek

Cholera, jesteś niesamowity. Próbowałem tylu innych rozwiązań. Mój adres URL to https:
also

Ta -vvvwskazówka była dla mnie pomocna. Teraz widzę, że jest napisane „Połączenie zamknięte przez port 22.XXX.XXX.X”.
Ryan

Ahhh, DeployHQ mówi: „BitBucket ma obecnie drobne problemy z usługami. Proszę sprawdzić ich stronę statusu, aby uzyskać więcej informacji. Status.bitbucket.org ” Bingo.
Ryan

123

Jakiś czas temu miałem do czynienia z tym samym problemem ...

mój .git / config miał

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

Zastąpiłem to

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

i działa teraz :)


8
jak to nie jest wyżej w rankingu? git @ github całkowicie dla mnie nie działa
hlitz

3
Jeśli właściciel repozytorium nie skonfigurował sshkluczy, prawdopodobnie wystąpi ten problem. Poprawkę, jak wskazano, należy użyć httpszamiast tego lub skonfigurować właściciela repossh
RyanNerd

@smileham przełącza odległe łącze z repozytorium z uwierzytelniania opartego na ssh na protokół https (w razie potrzeby wyświetli monit o usr / pwd)
Vincent Chalmel

to jest poprawna odpowiedź, zadziałało to dla mnie natychmiast.
Kingston Fortune,

Każdy, kto git remote set-url ...pomylił się, jak ja LUB niemądrze ma duży alfabet w swojej nazwie użytkownika (np. PeDro), taki jak ja (!), Powinien postępować zgodnie z tym. Udało się :)
Pe Dro

23

Spróbuj usunąć zmienną środowiskową GIT_SSH za pomocą unset GIT_SSH. To było przyczyną mojego problemu.


1
Działa .. Zastanawiam się, skąd wziąłem zmienną środowiskową GIT_SSH :)
StrangeLoop

1
W systemie Windows usuń zmienną środowiskową GIT_SSH z menu opcji zaawansowanych. Pracował dla mnie.
splintercell

W jaki sposób? Co mam napisać w terminalu, aby to zrobić?
Agentka Zebra,

17

Upewnij się, że ssh-agent jest uruchomiony, wykonując następującą komendę na swoim terminalu:

eval $(ssh-agent -s)

Źródło: dokumentacja Github


To również rozwiązuje problem. Dzięki
Ahmad

To również mnie naprawiło. Czy jest coś, co powinienem zrobić, aby upewnić się, że będzie działać w przyszłości? Jak umieścić go jako wpis w moim .zshrcpliku?
Brady Dowling

14

Jest to zwykle spowodowane tym, że klucz SSH nie pasuje do pilota.

Rozwiązania:

  1. Przejdź do terminala i wpisz następujące polecenie (Mac, Linux) zamień na swój identyfikator e-mail.

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

  2. Skopiuj wygenerowany klucz za pomocą następującego polecenia, zaczynając od słowa ssh.

    cat ~ / .ssh / id_rsa.pub

  3. Wklej go do github, bitbucket lub gitlab odpowiedniego pilota.
  4. Zapisz to.

9

Miałem ten sam problem.

Ten błąd oznacza, że ​​nie określiłeś swojej zdalnej lokalizacji adresu URL, na którą będzie wysyłany kod.

Zdalny adres URL można ustawić na 2 (głównie) sposoby:

  1. Określ zdalny adres URL, wykonując polecenie w Git Bash.

    • Przejdź do katalogu projektu

    • Otwórz Git Bash

    • Wykonaj polecenie:

      • git remote set-url origin <https://abc.xyz/USERNAME/REPOSITORY.git>
  2. Wspomnij o zdalnym adresie URL bezpośrednio w pliku konfiguracyjnym

    • Przejdź do katalogu projektu

    • Przejdź do folderu .git

    • Otwórz plik konfiguracyjny w edytorze tekstu

    • Skopiuj i wklej poniżej linii

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

Aby uzyskać bardziej szczegółowe informacje, odwiedź ten link .



7

Miałem ten sam błąd. Rozwiązanie było następujące: poprawiłem adres URL .git/config. Właśnie skopiowałem to z sklonowanego adresu URL HTTPS. To byłoby coś takiego:

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

Zadziałało.


jeśli napisałem to w moim pliku konfiguracyjnym pod Windows OS, błąd pojawił się inaczej, powiedział ... "/c/Users/asus/.ssh/config: line 5: Zła opcja konfiguracji: url"
gumuruh

używanie https przez ssh działa dobrze, pyta nazwę użytkownika i hasło
Kiran

4

Kolejne obejście:

Czasami zdarza mi się to z powodu problemów z siecią. Nie rozumiem w pełni problemu root, ale przejście do innej podsieci lub użycie VPN rozwiązuje go


Dokładnie moja sprawa. Chciałbym przeczytać ten komentarz. Po kilku godzinach debugowania pomyślałem o użyciu VPN i zadziałało.
Chaitanya Bapat,

4

Jeśli korzystasz z Gitlab, może być konieczne zalogowanie się i zaakceptowanie nowych warunków Gitlab, zanim spróbujesz pociągnąć lub wcisnąć.


Dlaczego głosowanie negatywne? Tego samego dnia rozwiązałem mój problem, to miało coś wspólnego z nowymi terminami gitlab.
Marcelo Agimóvel

Usuń swoją opinię. To poprawna odpowiedź, dzieje się to po zmianie warunków w gitlab. Zaakceptowanie nowych warunków gitlab może rozwiązać problem.
Marcelo Agimóvel

3

W twoim pliku .git / config

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

I po prostu

git push YOUR_APP_NAME master:master 

3

W moim przypadku użyłem klucza ssh z hasłem do uwierzytelnienia w github. Nie ustawiłem poprawnie widowiska w systemie Windows (tylko w cygwin). Brakujące kroki miały wskazywać zmienną środowiskową git_ssh na plink.exe. Musisz także dostać github.com do łącza znanego hosta.

   plink github.com
   y
   <then ctrl-c>

Mam nadzieję że to pomoże!

Na pewno chciałbym, aby intellij dał mi bardziej użyteczny błąd, a jeszcze lepiej poprosił mnie o wpisanie hasła klucza ssh.


3

Miałem zły klucz prywatny ssh dla Bitbucket wraz z właściwym w agencie ssh.

Najpierw usunięto wszystkie klucze

ssh-add -D

Następnie dodano odpowiedni klucz.

ssh-add ~/.ssh/id_rsa

2

W moim przypadku korzystam z sieci korporacyjnej (bez połączenia z Internetem) w biurze. Aby pobrać kod z github, ustawiam proxy https w gitbash, a następnie używam https zamiast ssh do pobierania kodu, działa dobrze. Jednak jeśli chodzi o kod push, proxy https nie będzie działać. Więc albo przełącz się na sieć internetową (z połączeniem internetowym) lub ustaw proxy ssh, aby rozwiązać problem.


2

W rzeczywistości próbowałem wielu rzeczy, aby działało na Win7, ponieważ zmieniłem natywny SSH exectun fron na build-it i wstecz i ten sam błąd. Przez przypadek zmieniam go na HTTPS w pliku „.git / config” jako:

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

i w końcu zadziałało. Więc może to też zadziała dla ciebie.


2

Miałem ten sam problem i po chwili zauważyłem, że jestem użytkownikiem root (z sudo -s). Niech to komuś pomoże.


Potwierdzam, że nawet jeśli skonfigurowałeś klucz ssh na swoim komputerze i na BitBucket, nadal będzie wyświetlać ten błąd, jeśli spróbujesz wykonać polecenie „git pull” za pomocą polecenia „sudo”.
ElectroBuddha

2

Jeśli po poleceniu „git push origin master” zobaczysz błąd „nie można odczytać ze zdalnego repozytorium”, wypróbuj to

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

Miałem ten sam błąd, który doprowadził mnie do tej odpowiedzi, która mi nie pomogła. Próbowałem po raz pierwszy utworzyć nowe „puste” repozytorium, używając poniższych poleceń do śledzenia lokalizacji 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

Mój problem polegał na używaniu ukośników odwrotnych zamiast ukośników w lokalizacji NTFS podczas próby dodania źródła w celu ustawienia (nowej) śledzonej gałęzi w górę.

Musiałem usunąć pochodzenie za pomocą:

git remote rm origin

Następnie dodaj początek ponownie, używając oczekiwanych ukośników

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

Mam nadzieję, że to pomoże komuś w przyszłości.


1

Ten błąd występuje po zmianie komputera. Używam SourceTree z Bitbucket.

Musiałem więc dodać klucz SSH wygenerowany przez SourceTree na nowym komputerze, w Ustawieniach Bitbucket> Bezpieczeństwo> Klucze SSH, podczas gdy jestem podłączony do mojego konta Bitbucket w Internecie.


1

Rozwiązałem ten problem, ponownie uruchamiając terminal (otwórz nowe okno / kartę).

Więc jeśli tak naprawdę nie chcesz / musisz zrozumieć podstawowy problem, warto spróbować metody testowej przed głębszym kopaniem :)


0

Dla tych, którzy mają ten problem na prywatnym zdalnym repozytorium. upewnij się, że zaakceptowałeś umowę Xcode na zdalnym serwerze: znalezienie tej poprawki zajęło nam tygodnie

Użyj tego polecenia z wiersza poleceń: sudo xcodebuild -license


0

Chciałem się tylko podzielić, że znalazłem łatwą naprawę:

Brak dostępu. fatal: Nie można odczytać ze zdalnego repozytorium. Upewnij się, że masz odpowiednie prawa dostępu, a repozytorium istnieje.

po prostu wyloguj się z gitlab i zaloguj ponownie. Problemy powinny zostać następnie naprawione.


0

Korzystając z putty / pageant, upewnij się, że nie zapomniałeś dodać poprawnego klucza SSH do pageant, w przeciwnym razie pojawi się ten błąd. DUH



0

Idź do terminala MINGW32 i umieść to polecenie: git branch --set-upstream-to = origin / (Branch name)


0

Jeśli nadal pojawia się ten sam błąd, upewnij się, że w ustawieniach git-> karta ssh-> klient ssh do użycia jest ustawiony na openSSHwprowadź opis zdjęcia tutaj


0

Z mojego doświadczenia wynika, że jednym z powodów wystąpienia tego problemu jest niestabilne połączenie z Internetem .

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.