Git: odmowa uprawnień (publickey) fatalna - nie można odczytać ze zdalnego repozytorium. podczas klonowania repozytorium Git

153

Nie mogę sklonować repozytorium Git i otrzymuję ten błąd:

krishna.soni@KRISHNACHANDRAS /c/Projects $ git clone http://stage.abc.com:10088/pqr
http://<url>/<repository> Cloning into '<repository>'... fatal: could not read Username for 'http://<url>': No such file or directory

Przeczytałem Bitbucket, Windows i „fatal: nie można odczytać hasła” , ale nadal mam problem.

Poszedłem dalej, ale teraz pojawia się ten błąd

sh.exe": chown: command not found

krishna.soni@KRISHNACHANDRAS /c
$ git clone ssh://[email protected].
/projects
Cloning into 'C:/projects'...
Permission denied (publickey).
fatal: Could not read from remote repository.

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

> krishna.soni@KRISHNACHANDRAS /c
>     $ git clone ssh:<url>
>     ts
>     Cloning into 'C:/projects'...
>     Permission denied (publickey).
>     fatal: Could not read from remote repository.

Please make sure you have the correct access rights

i repozytorium istnieje.

KCS
źródło
Czy na pewno jest to repozytorium git?
gravetii
Tak to jest . Jestem nowy w git, otrzymuję ten błąd podczas klonowania. Dodałem adres e-mail i imię w globalnym pliku konfiguracyjnym za pomocą poleceń git config --global user.name "John Doe" $ git config --global user.email [email protected]
KCS
Głównym powodem jest to, że repozytorium nie może rozpoznać Cię jako użytkownika git-server. Czy możesz uzyskać dostęp do serwera przez ssh?
Малъ Скрылевъ
Jeśli ktoś ma ten problem podczas korzystania z Github, wykonaj kroki wymienione tutaj: help.github.com/en/articles/… U mnie zadziałało.
Rounak

Odpowiedzi:

69

Wygląda na to, że problem dotyczy uprawnień, a nie systemu Windows 7.

Twój klucz SSH nie jest autoryzowany - Permission denied (publickey).

Musisz utworzyć publiczny klucz ssh i poprosić administratora repozytorium Git o dodanie sshklucza publicznego

Informacje, jak to zrobić: Zapisanie klucza ssh nie powiodło się

Pierwsze zero
źródło
27
To jest dziwne. Repozytorium jest publiczne i klonuję repozytorium publiczne. Nie wiem, dlaczego powinienem prosić administratora o pozwolenie na sklonowanie jego repozytorium publicznego hostowanego na Github.
Shailen
5
Tak, jest fałszem, nie musisz o nic pytać administratora, jest to problem z lokalnym gitem.
Ivan Castellanos
3
Dlaczego jest to trudne? Udało mi się, ale nie było to bezbolesne.
Niklas R.
9
Nie musisz autoryzować klucza do publicznych repozytoriów, po prostu użyj protokołu HTTPS: stackoverflow.com/a/33072867/1385678
Diego V,
225

Dla osób, które tu przyjeżdżają i próbują zdobyć repozytorium, ale nie dbają o protokół (ssh / https), możesz po prostu chcieć użyć https zamiast ssh (jeśli jest obsługiwany).

Na przykład używasz

git clone https://github.com/%REPOSITORYFOLDER%/%REPOSITORYNAME%.git

zamiast

git clone [email protected]:%REPOSITORYFOLDER%/%REPOSITORYNAME%.git
Arjan
źródło
6
Jest to najbardziej odpowiedni plan awaryjny, jeśli uprawnienia ssh nie zostaną rozwiązane lub chcesz pominąć tę część.
Wahib Ul Haq
13
Ta odpowiedź zmieniła mechanizm z sshna https. Nie jest to rozwiązanie pierwotnego problemu poprzez użycie ssh w celu uzyskania dostępu do repozytorium. Zastanawiam się, jak to może być uznawane za dobrą odpowiedź na to pytanie. Pozostałe odpowiedzi poniżej rozwiązują to poprawnie.
Armin
3
Pierwotnym problemem jest nowicjusz git próbujący sklonować repozytorium. Jeśli celem jest usunięcie publicznego repozytorium, jest to najszybsza skuteczna odpowiedź.
Vivek Chavda
Dziękuję za uratowanie mnie przed samobójstwem. Do dnia, można to wykorzystać do prywatnego repozytorium, pod warunkiem, że masz nazwę użytkownika i hasło.
BILL WAGNER
81

Jeśli nadal występuje problem z dostępem po utworzeniu SSH i dodaniu go do konta Bitbucket lub w innym miejscu, musisz wykonać następujące czynności w terminalu na GitBash, OSX lub Linux:

# Lists already added identities (‘ssh keys’)
ssh-add -l

Następnie, jeśli nie widzisz swojego klucza na liście, dodaj go następująco (zastąp identityjego prawdziwą nazwą):

# Add a new identity
ssh-add ~/.ssh/identity

To zadziałało dla mnie.

Srikanth Kondaparthy
źródło
3
ssh-add ~/.ssh/identitybłąd powrotu/Users/lee/.ssh/identity: No such file or directory
lee
14
Uruchomienie „ssh-add” z „~ / .ssh” (i wprowadzenie hasła do mojego pliku „~ / .ssh / id_rsa” po wyświetleniu monitu) rozwiązało problem.
James Furey
1
Udało mi się wyciągnąć repozytorium, ale nie pchałem bez tego, na zdrowie!
Dimitar Nestorov
Odpowiedź @james Furey pomogła mi w drzewie źródłowym zidentyfikować adres URL ssh jako repozytorium git.
Fan YSR
2
pracowało dla mnie ... po godzinach pocenia się i próbowania różnych rzeczy. Jedyną rzeczą jest to, że zamiast tożsamości w końcu użyj nazwy we własnym systemie. Przejdź do folderu .ssh, wykonując polecenie cd w terminalu, a następnie wpisz polecenie „ls” w terminalu. Następnie powtórz polecenie „tożsamość” z góry, używając własnego pliku. Idź do terminala sourcetree i: cd ~następnie cd .sshnastępnie ls(skopiuj nazwę bez rozszerzenia .pub) następnie (uruchom to polecenie)ssh-add ~/.ssh/(copied name)
Tejas
21

Napotkałem ten sam problem z GitHubem . Oto jak to rozwiązać!

  1. Wygeneruj klucz SSH na swoim komputerze, jak opisano tutaj: Generowanie kluczy SSH .
  2. Zaloguj się na swoje konto GitHub : Logowanie na GitHub .
  3. Na swoim koncie dodaj nowo wygenerowany klucz SSH: klucze SSH mojego konta .
  4. Spróbuj ponownie do git cloneprojektu.
Maxime
źródło
Działało jak urok !!
Prakhar
1
Użyłem tej odpowiedzi w 3 nowych systemach operacyjnych w ciągu ostatnich 5 lat i za każdym razem działała idealnie.
kotoole
Najwyraźniej High Sierra wymaga od użytkownika zarejestrowania klucza w pliku .ssh / config. El Capitan jakoś sobie bez tego radził.
dsomnus
14

Miałem ten problem na komputerze Mac - podczas poprawnej konfiguracji SSH, aby uzyskać dostęp do repozytorium Git, po ponownym uruchomieniu (i przez pewien czas Mac był w stanie spoczynku), wszystkie moje poświadczenia zostały usunięte. Najwyraźniej z jakiegoś powodu klucz pubu został ustawiony na 644, co spowodowało usunięcie go z pęku kluczy. Aby przeczytać:

  • chmod 600 klucz publiczny
  • ssh-add ~/.ssh/[your private key]- powinno to pokazać, że tożsamość została dodana. Potrzebny plik klucza to ten bez rozszerzenia .pub.
  • ssh-add -l powinien pokazać nowo dodaną tożsamość

edycja: najwyraźniej MacOS ma tendencję do usuwania kluczy - po pobraniu aktualizacji High Sierra (ale jeszcze jej nie zainstalowałem) mój klucz został usunięty i musiałem go dodać ponownie przez ssh-add

eithed
źródło
2
To rozwiązanie jest nadal dokładne po uaktualnieniu systemu macOS High Sierra do wersji 10.13.1. W szczególności Sourcetree była aplikacją, która ujawniła problem, gdy próbowałem przekazać zatwierdzenie do zdalnego repozytorium. Powyższe kroki rozwiązały problem.
Paul Bonneville
Miałem ten problem na 10.13.4 i to rozwiązanie działało dla mnie.
Andrew Ebling
11

Ja też stanąłem przed tym samym problemem. Zrobiłem następujące i zadziałało dla mnie:

  1. Generuj klucze z klienta GIT GUI w systemie Windows. Skopiuj ten klucz do schowka.
  2. Otwórz swoje konto w bitBucket/witrynie git i dodaj ten klucz do swojego profilu. W ten sposób serwer wie, że jesteś uprawnionym użytkownikiem uzyskującym dostęp z legalnego systemu.
  3. Otóż ​​to. Wszystkie polecenia push działały odtąd dla mnie.
Ashwin Tumma
źródło
To pomogło mi zobaczyć, że wygenerowałem RSA bez uruchamiania Git Bash jako Administrator, który umieścił mój klucz RSA na dysku "h": ups:
tylerlindell
7

W moim przypadku, gdy chciałem sklonować z mojego repozytorium, otrzymałem ten sam komunikat przed „Odmowa uprawnień (publickey) fatalna: Nie można odczytać ze zdalnego repozytorium”. Rozwiązaniem dla mojego przypadku jest nie używanie sudo przed sklonowaniem. To wszystko.

mustapha
źródło
Wielkie dzięki @mustapha, naprawdę oszczędzasz mój czas.
vinay kumar
7

Github (lub Bitbucket) nie może znaleźć twojego klucza ssh na swoim serwerze.

Po prostu dodaj swój klucz w ustawieniach konta.

jsxqf
źródło
6

Jeśli wygenerujesz nowy publiczny klucz ssh i wstawisz go do bitbucket lub github i

to nie pomogło - spróbuj ponownie uruchomić komputer . Pomogło mi !!

nicolas asinovich
źródło
Dziękuję, to też musiałem zrobić.
Steph
Musiałem zamknąć terminal i otworzyć nowy, żeby zobaczyć, jak działa.
rahul
5

Musisz utworzyć nowy klucz ssh, uruchamiając ssh-keygen -t rsa.

biniam
źródło
Odniesienie @Joel Heroku zostało usunięte. Dzięki
biniam
4

Mam błąd ...

Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.

... kiedy próbowałem skontaktować się z Git Bash do Bitbucket po tym, jak mój laptop zmarł z powodu złej aktualizacji Windows 10 i został przywrócony do ustawień fabrycznych. Przywróciłem wszystkie moje pliki ssh z kopii zapasowej.

Przyczyną błędu okazała się niezgodność w nazwie mojego konta Windows po odbudowie komputera. Dowiedziałem się, że plik klucza publicznego id_rsa.pubkończy się łatwym do odczytania ciągiem zawierającym nazwę mojego konta Windows, po którym następuje rozszerzenie@ znak, a następnie nazwa komputera.

Kiedy początkowo konfigurowałem komputer, utworzyłem nazwę mojego konta Windows, w tym inicjał drugiego imienia, ale kiedy komputer został zresetowany do ustawień fabrycznych, nasz nowy facet DevOps utworzył nazwę mojego konta bez inicjału drugiego środka.

Aby rozwiązać ten problem, po prostu wyedytowałem plik klucza publicznego id_rsa.pubi usunąłem na końcu drugi inicjał mojego imienia i nazwiska. Utknąłem przy tej samej nazwie komputera, więc to było w porządku. Skopiowałem zawartość pliku do schowka Windows. Następnie zalogowałem się do Bitbucket, przeszedłem do Ustawień Bitbucket pod moim awatarem i dodałem nowy klucz publiczny, w którym wkleiłem nową zawartość.

Po powrocie do wiersza polecenia Git Bash potwierdziłem, że teraz zadziałało, wprowadzając polecenie ...

ssh -T [email protected]

... i otrzymałem wiadomość, że jestem zalogowany.

Ken A Collins
źródło
4

W systemie macOS / Linux (Ubuntu):

1. Aby dokonać uwierzytelnienia, musisz dodać swoją publiczną część pary kluczy SSH do bitbucket z poziomu ustawień użytkownika: Ustawienia użytkownika -> Klucze SSH

Zwykle znajdziesz tę publiczną część w swoim katalogu ~ / .ssh id_rsa.pub. zanotuj .pubczęść nazwy pliku dla publicznego. pomoże ci go wygenerować, jeśli jeszcze go nie masz

Jeszcze nie skończyłeś ...

2. Musisz poinformować system, jakiego klucza użyć z którym zdalnym hostem, więc dodaj te linie do swojego pliku ~ / .ssh / config

Host bitbucket.org
 IdentityFile ~/.ssh/PRIVATE_KEY_FILE_NAME

Gdzie PRIVATE_KEY_FILE_NAMEjest nazwa prywatnej części twojej pary kluczy SSH, jeśli nie pomieszałeś z nią, zwykle jej domyślna nazwa to: id_rsa w tym przypadku zamień PRIVATE_KEY_FILE_NAMEpowyżej na id_rsa(klucz prywatny NIE MA .pubrozszerzenia)

ninjayoto
źródło
Uwaga, to błędnie „Ubuntu” - edycja musi mieć co najmniej 6 znaków, więc nie mogę sugerować zmienił :)
Misha Nasledov
4

Przydatny wątek i niewiele nowego wnoszę do stołu. Krok, który zrobiłem, jest również częścią opisu, na który Maxime wskazuje pomocnie, ale niektórzy mogą to przeoczyć. Sekcja polega na dodawaniu klucza SSH do ssh-agent .

Wygenerowałem już mój klucz ssh, ale po ponownym uruchomieniu nie mogłem sklonować jednego z moich własnych repozytoriów.

Musiałem uruchomić ssh-agenta i dodać klucz prywatny do tego agenta, aby sklonować.

eval $(ssh-agent -s)
ssh-add ~/.ssh/id_rsa
kometen
źródło
3

Napotkałem ten sam problem podczas uruchamiania git clonepolecenia z wiersza poleceń systemu Windows. Ale polecenie działa pomyślnie z Git Bash .

lazyvab
źródło
3

Miałem podobny problem. Zmieniłem klucze ssh, zrestartowałem i wypróbowałem wszystkie inne rozwiązania „n”. Ale faktycznym problemem dla mnie był nasz domyślny protokół gitlab zmieniony z ssh na https.

sprawdź zdalny adres URL za pomocą

git remote -v

zmienić zdalny adres URL

git remote set-url origin https://URL
nantitv
źródło
Jest doskonały, nie musimy konfigurować ssh.
Rohit Parte
Musiałem zrobić to samo. Klucz ssh nie działał w tym przypadku
Dani
krytyczny: brak dostępu do „ bitbucket.org:xxxxxx/xxxxxxxxt ”: numer portu zakończony
literą
2

Jeśli wszystko zawiedzie, tak jak w przypadku mnie, odinstaluj GIT, zainstaluj ponownie. Z jakiegoś powodu to rozwiązuje.

PS

  1. Próbowałem wygenerować nowe klucze i zaktualizować klucze publiczne SSH
  2. Próbowałem także usunąć wszystkie klucze i próbowałem utworzyć nowy klucz.
  3. I NIE, nic złego w mojej .gitconfig
Ronak Agrawal
źródło
2

poprawka dla hubnarzędzia CLI:

  • git config --global hub.protocol https na dłuższą metę
  • git remote add OOPS https://github.com/isomorphisms/go.git&& git push OOPSdo natychmiastowej naprawy

Ten błąd występuje w hubnarzędziu wiersza poleceń z powodu ich nieprawidłowej domyślnej wartości hub.protocolgit-config. Ustawili repozytoria na

git://github.com/schacon/ticgit.git

zamiast tego, co faktycznie akceptuje github, a mianowicie https://github.com/schacon/ticgit.git.


Czytanie LESS=+/"HTTPS instead" man hubwyjaśni, skąd pochodzi powyższe polecenie „długoterminowej poprawki”.

izomorfizmy
źródło
To uratowało mi dzień!
Jay Lee
1

Podczas klonowania miałem podobny problem [my ERROR: Permission denied (publickey). krytyczny: nie można odczytać ze zdalnego repozytorium. Upewnij się, że masz odpowiednie prawa dostępu itp.]

- W moim przypadku używałem bitBucket / UBUNTU14.04, ale JUŻ miałem zestaw plików kluczy, które wcześniej wygenerowałem ORAZ zmieniłem nazwy plików. Po prostu SKOPIOWAŁEM pliki do standardowego formatu nazw id_rsa i id_rsa.pub. Następnie ponownie uruchomiłem polecenie bez wydania.

OBTW : Mogłem również użyć monitu o hasło, używając klonu w stylu HTTP.

Jorge de la Torre
źródło
0

Miałem podobny problem na Linuksie. Rozwiązałem problem, logując się do serwera github i tworząc klucz wdrażania. To jest w ustawieniach repozytorium. Następnie skopiowałem i wkleiłem mój klucz publiczny (który zwykle znajduje się w ~ / .ssh / id_rsa.pub, ale twoja konfiguracja może być inna). Jest pole wyboru, które daje dostęp do tego klucza do zapisu. Kliknij go (chyba że używasz git tylko do wdrażania, w takim przypadku nie klikaj go).

user1928764
źródło
0

Miałem ten sam błąd. Moim rozwiązaniem było wylogowanie się i ponowne zalogowanie, ponieważ mój ssh-agent stracił synchronizację ze zdalnym kluczem ssh.

Dodanie tego tutaj na wypadek, gdyby ktoś zauważył, że inne odpowiedzi nie mają zastosowania do jego sytuacji.

Martlark
źródło
0

Miałem ten sam problem podczas konfigurowania ssh dla gitlab. Mam już ssh dla githubi nie mogłem tego nadpisać. Kroki, które zadziałały dla mnie, to:

  1. Wygeneruj SSH z nową ścieżką i dodaj ją do listy ssh ssh-add /path/to/new/id_rsa.
  2. Utwórz plik o nazwie configw ~/.ssh/using. Użyłem vi ~/.ssh/config/.
  3. Dodaj to do nowo utworzonego pliku

# GitLab.com server Host gitlab.com RSAAuthentication yes IdentityFile /path/to/new/id_rsa

  1. Zapisz i wyjdź.

Następnie zrestartuj terminal i spróbuj pchać, powinien działać

Ishwar Rimal
źródło
0

Jeśli chcesz sklonować projekty open source w celu przesłania pull request:

Chciałem sklonować projekt open source, aby móc przesłać kilka żądań ściągnięcia. Problem polegał na tym, że nie miałem uprawnień od właściciela projektu. Nieważne, ponieważ moim zamiarem było przesłanie PR, oto realna alternatywa:

Moje rozwiązanie:

  1. Repozytorium widelców

Fork Repo

  1. Następnie sklonuj z rozwidlonego repozytorium. Klonuj z rozwidlonego repozytorium

  2. Pracuj nad swoimi funkcjami, a następnie prześlij żądanie ściągnięcia.

BKSpurgeon
źródło
0

Możesz spróbować dodać klucz SSH do swojego prywatnego pęku kluczy. U mnie to zadziałało

ssh-add -K ~/.ssh/[your-private-key]
Ankur Kedia
źródło
"nieznana opcja - K"
Jiří Doubravský
0

rozwiązanie: Na serwerze, na który próbujesz klonować lub wypychać z cat ~ / .ssh / id_rsa.pub Przejdź do GitHub, ustawienia, klucze SSH i GPG , nowy klucz wklejania klucza SSH .

user5854766
źródło
0

Widzę, że ten komunikat o błędzie ma wiele różnych powodów. Miałem ten sam błąd, gdy próbowałem skonfigurować lokalnie inne repozytorium obok tego, które już w pełni współpracuje z ssh itp. I połączyć je z tym samym serwerem, ale innym repozytorium. Nie było tutaj żadnych odpowiedzi, ale rozgryzłem to. Więc wysyłam to. Mam nadzieję, że komuś pomoże.

git remote add origin [email protected]:teamalpha/repositorytwo.git
uldics
źródło
0

jeśli żadna z tych odpowiedzi nie pomoże i

  1. korzystasz z systemu Windows
  2. generujesz klucz za pomocą Putty lub zainstalowałeś Putty na swoim komputerze
  3. generujesz swój klucz za pomocą CMD lub PowerShell

Próbować

  1. usuń klucze
  2. wyszukaj w systemie Windows Git Bash, a następnie wygeneruj nowy klucz za pomocą wiersza poleceń Git Bash
  3. dodaj klucz publiczny do swojego repozytorium online

Następnie znajdziesz po klonowaniu git i wpisz tak, aby potwierdzić, powinno rozpocząć się klonowanie

Fadeoc Khaos
źródło
-2

Może to głupie, ale nam się to przytrafiło:

Jeśli używasz bitbucket i Sourcetree i po prostu skopiujesz wklej adres URL klonowania do nowego okna dialogowego repozytorium, wyświetli się ten sam błąd podczas ściągania lub wypychania.

Upewnij się, że usunąłeś element „git clone” przed adresem URL.

Mijail
źródło