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

LDN
źródło
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
Być może rozwiązałoby to problem: help.github.com/articles/connecting-to-github-with-ssh
Guy Avraham
Powiązany problem: stackoverflow.com/questions/10127818/…
Anton Tarasenko
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
Rob Mayoff
źródło
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: [email protected]: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

Johnny Cage
źródło
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 = [email protected]: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 [email protected]

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.

Tombart
źródło
1
Dziękuję Ci!! W pewnym momencie, kiedy sklonowałem moje repozytorium, urlustawiono je na https://github.com/user/repo.git(bez [email protected]), 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://[email protected]/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 = [email protected]:manishnakar/polymer-demo.git

Zastąpiłem to

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

i działa teraz :)

Manish Nakar
źródło
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.

Scott Lindner
źródło
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

użytkownik3362907
źródło
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 "[email protected]"

  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.
Bastin Robin
źródło
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 .

Pratik Patel
źródło
8

Po przeprowadzeniu badań w końcu mam na to rozwiązanie, zadeklarowałeś zmienną środowiskową do ścieżki plink.exe. Więc jeśli usuniesz tę ścieżkę, ponownie otwórz git bash i spróbuj sklonować przez SSH, to zadziała.

Zobacz ten link

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

Mohammed Nasiruddin
źródło
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.

tan75
źródł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

kip2
źródło
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ąć.

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

I po prostu

git push YOUR_APP_NAME master:master 
użytkownik1982195
źródło
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.

Jeff Hoye
źródło
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
Na zawsze
źródło
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.

wenwen
źródło
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.

Ignacio Lucatero
źródło
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.

Jean-Luc Barat
źródło
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 
sushmitha
źródło
2

Miałem doskonale działający dupek i nagle dostałem ten błąd, kiedy próbowałem naciskać na mistrza. Jak się dowiedziałem, było tak, ponieważ host repozytorium miał problemy.

Jeśli używasz GitHub lub Bitbucket, możesz łatwo sprawdzić status na

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

wprowadź opis zdjęcia tutaj

Adam
źródło
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.

Mikrofon
źródło
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.

eby
źródło
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 :)

Mraxus
źródło
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

Joseph Bolade Caxton-Idowu
źródło
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.

nechama b
źródło
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

mashup
źródło
0

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

Juned Ahmed
źródło
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

Anil Kumar B.
źródło
0

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

Marwan Salim
źródło