Błąd Git: „Upewnij się, że masz odpowiednie prawa dostępu i repozytorium istnieje”


107

Używam TortoiseGit w systemie Windows. Kiedy próbuję klonować z menu kontekstowego standardowego Eksploratora Windows, pojawia się ten błąd:

Upewnij się, że masz odpowiednie prawa dostępu i repozytorium istnieje

Dokładniej, migawka terminala przedstawia się następująco:

klon git.exe --progress -v "git @ arobotdev: \ git \ AlfaRobot.git" "C: \ Work \ AlfaRobot"

Klonowanie do 'C: \ Work \ AlfaRobot' ...
Odmowa dostępu , spróbuj ponownie.
Odmowa dostępu, spróbuj ponownie.
Odmowa dostępu (klucz publiczny, hasło).
krytyczny: nie można odczytać ze zdalnego repozytorium.

Upewnij się, że masz odpowiednie prawa dostępu
i repozytorium istnieje.

git nie zakończył poprawnie (kod zakończenia 128) (21450 ms @ 19.09.2014 10:36:58)

Co powinienem zrobić, aby git działał poprawnie?


1
spróbuj wygenerować keygen ssh i dodaj
Raja Simon

Użycie Shell (lub Git Bash w Windows) do utworzenia klucza SSH:$ ssh-keygen -t rsa -C "youremail@example.com"
Belter

Miałem ten błąd po zmianie repozytoriów na adresy git@github.com, ponieważ nie trzeba ciągle wpisywać hasła. Prawdziwym błędem, który spowodował, było zapomnienie o dodaniu mojego klucza publicznego na githubie.
dasWesen

Odpowiedzi:


82

Twój adres URL git mógł się zmienić. Zmień adres URL w katalogu lokalnym za pomocą następującego polecenia

git remote set-url origin git@yourGitUrlHere

20
FYI github używa teraz schematu git remote set-url origin https://github.com/username/repository.git
adresu

2
@RyPope, możesz użyć dowolnego protokołu git (ssh) lub https, takie jest twoje życzenie. github ma teraz oba protokoły giti https.
Wisznu

@Vishnu Whats the XXXXXXX?
244boy

@RyPope Zamień to na odpowiedź
ishandutta2007

Popełniłem bardzo częsty błąd. Skopiowałem za pomocą polecenia clip xclip -sel clip < ~/.ssh/id_rsa.pub, ale podczas wklejania do pola wprowadzania klucza na github, usunąłem ostatnią nową linię za pomocą backspace, co faktycznie zmieniło klucz publiczny. Dlatego zawsze kopiuj i wklejaj publiczny klucz ssh bez usuwania ostatniej nowej linii.
Amreesh Tyagi

72

Ten problem może występować z twoim ssh-agent, twój klucz ssh nie został dodany przez ssh-agent. Musisz wykonać następujące kroki używając twojego terminala: -

  1. $ eval "$ (ssh-agent -s)"

    Numer identyfikacyjny agenta 5867

  2. $ ssh-add

    Wprowadź hasło do /home/you/.ssh/id_rsa: [] Dodano tożsamość: /home/you/.ssh/id_rsa (/home/you/.ssh/id_rsa)

to zadziała..chody J.


11
Nadal pojawia się błąd podczas klonowania:fatal: Could not read from remote repository.
IgorGanapolsky

Dzięki, że zadziałało dla mnie stworzyłem inny klucz niż domyślny id_rsa, więc po prostu muszę to zrobić dodatkowo w powyższym poleceniu ssh-add -K ~ / .ssh / id_rsa_other_project.
Nitesh

Tak, to w ogóle nie rozwiąże żadnego problemu. Dodanie swojej tożsamości do ssh zatrzymuje tylko pytania o hasło do certyfikatu za każdym razem
DMcCallum83

Twoje zdrowie. Nie udało mi się uruchomić brew update. kiedy uruchomiłem ssh-addprzed uruchomieniem polecenia, zadziałało. mam nadzieję, że nie muszę tego powtarzać cały czas.
nyxee,

nadal pojawia się błąd „Weryfikacja klucza hosta nie powiodła się. Fatalny: nie można odczytać ze zdalnego repozytorium”. ale dodanie znanego hosta naprawione dla mnie: stackoverflow.com/questions/15214977/ ...
rickvian

42

Spróbuj użyć HTTPS zamiast SSH podczas pobierania klonu z GIT, użyj tego adresu URL do pobrania klonu, możesz użyć Gitbase, Android Studio lub dowolnego innego narzędzia do klonowania gałęzi. wprowadź opis obrazu tutaj


36

U mnie to z powodu braku klucza SSH na maszynie. Sprawdź klucz SSH lokalnie:

$ cat ~/.ssh/id_rsa.pub

To jest Twój klucz SSH. Dodaj go do kluczy SSH w repozytorium.
W gitlab przejdź do

ustawienia profilu -> Klucze SSH

i dodaj klucz


7
Dodałem klucz, jak wspomniałeś, i nadal otrzymuję komunikat o odmowie dostępu. Proszę o pomoc
Jet

24

Github używa teraz schematu adresu URL

git remote set-url origin https://github.com/username/repository.git


fatal: No such remote 'origin'. Mam repozytorium na githubie i zainicjowałem lokalne repozytorium git na moim komputerze z git init.
Noah J. Standerson

9

Próbujesz sklonować repozytorium przez ssh:, git@arobotdev...a twoje klucze SSH nie są poprawnie ustawione na serwerze. Istnieje wiele powodów takiego stanu rzeczy:

  1. Twój klucz publiczny może nie zostać zapisany w pliku authorised_keys użytkownika git
  2. Jeśli 1 nie jest prawdą, Twój klucz prywatny nie jest zapisywany w folderze .ssh / w Twoim HOMEDIR.
  3. Uprawnienia nie są poprawnie ustawione

Jeśli wszystkie powyższe 3 są nieprawdziwe, moim jedynym wnioskiem może być spróbowanie: git@arobotdev:AlfaRobot.git Zakładając, że AlfaRobot.git znajduje się w HOMEDIR użytkownika git, a nie w folderze o nazwie git, który znajduje się w HOMEDIR użytkownika git.


5

Rsa.pub (czyli wygenerowany klucz publiczny), należy dodać na stronie github >> settings >> ssh keys. Sprawdź, czy nie dodałeś tego klucza publicznego w ustawieniach repozytorium >> klucze wdrażania. Jeśli tak, usuń wpis z tego miejsca i dodaj do pierwszego wymienionego miejsca.

Ustawienia klawiszy PUB-prywatne w szczegółach .

Odtąd będzie działać!


5

Jeśli działał wcześniej i nagle przestał działać:

Ten problem może być spowodowany tym, że czasami ssh-agentnie jest trwały po ponownym uruchomieniu. Powinieneś sprawdzić, czy ssh-agentdodano Twój klucz:

ssh-add -l -E md5

jeśli otrzymasz wynik, taki jak:

The agent has no identities.

oznacza to, że ssh-agentzgubiłeś klucz. W takim przypadku wystarczy ponownie dodać klucz tożsamości. Coś jak:

ssh-add ~/.ssh/git_rsa

Błąd powinien teraz zniknąć!


1
Zdarzyło mi się to, gdy utworzyłem kolejny ssh dla innego konta, więc po prostu dodaję brakujący git_rsado listy
Jan

3
  1. Pierwszą rzeczą, którą możesz chcieć potwierdzić, jest połączenie internetowe. Chociaż problemy z Internetem będą głównie oznaczać, że nie można uzyskać dostępu do repozytorium.

  2. Upewnij się, że skonfigurowałeś ssh zarówno lokalnie, jak i na swoim githubie. Zobacz jak

  3. Upewnij się, że używasz pilota ssh git. Jeśli sklonowałeś https, po prostu ustaw adres URL na adres ssh za pomocą tego polecenia gitgit remote set-url origin git@github.com:your-username/your-repo-name.git

  4. Jeśli poprawnie skonfigurowałeś ssh, ale po prostu przestał działać, wykonaj następujące czynności:

    • eval "$(ssh-agent -s)"
    • ssh-add

    Jeśli nadal masz problem, sprawdź, czy nie usunąłeś ssh ze swojego github. W przypadku, gdy ssh został usunięty z github, możesz dodać go z powrotem. Użyj, pbcopy < ~/.ssh/id_rsa.pubaby skopiować klucz ssh, a następnie przejdź do ustawień ssh na github i dodaj je.

Będę zalecał zawsze używanie ssh. W przypadku większości zespołów, z którymi pracowałem, nie możesz uzyskać dostępu do repozytorium (które jest w większości prywatne), chyba że używasz ssh. Początkującym może się to wydawać trudniejsze, ale później okaże się to znacznie łatwiejsze i bezpieczniejsze.


3

Miałem ten problem i odkryłem, że mój system miał nieprawidłowy adres DNS. Zweryfikuj swoją sieć i przetestuj z

ssh -vvv git@bitbucket.org

I przeczytaj komunikaty wyjściowe. Jeśli widzisz komunikat „Możesz użyć git lub hg, aby połączyć się z Bitbucket”. , wszystko w porządku.


cześć @Albert, mam ten sam problem, ale dla gitlab.com. Jak udało ci się rozwiązać problem?
abiratsis

@AlexandrosBiratsis Zamieniam moje dns na inny adres. Spróbuj opendns lub google dns.
Albert

3

Natknąłem się na ten błąd podczas przesyłania projektu do gitlab. Nie sklonowałem z gita, ale zamiast tego załadowałem projekt. Aby przesłać kod do gitlab, możesz skorzystać z dwóch sposobów: ssh lub https. Jeśli używasz https, musisz podać nazwę użytkownika i hasło do konta gitlab. Aby przesłać kod do gita, możesz użyć następującego.

Pierwsze przeniesienie do Git

>$ cd
>$ mkdir .ssh;cd .ssh
>$ ssh-keygen -o -t rsa -b 4096 -C "email@example.com"

Parametr -C jest opcjonalny, zapewnia komentarz na końcu klucza, aby odróżnić go od innych, jeśli masz wiele. Spowoduje to utworzenie id_rsa (twój klucz prywatny) i id_rsa.pub (twój klucz publiczny). Przekazujemy nasz klucz publiczny i przechowujemy nasz klucz prywatny - no cóż, prywatny. Użytkownik Gitlab za Ustawienia miejscu można byłoby następnie dodać swój klucz publiczny do konta , co pozwala nam w końcu popchnąć.

W lokalizacji twojego projektu (katalogu) użyj poniższego polecenia

git init

Przekształca bieżący katalog w repozytorium Git. Dodaje to podkatalog .git do bieżącego katalogu i umożliwia rozpoczęcie nagrywania wersji projektu.

Push przy użyciu ścieżki https

git push --set-upstream https://gitlab.com/Account_User_Name/Your_Project_Name.git master

Wciśnij używając ścieżki ssh

git push --set-upstream git@gitlab.com:Account_User_Name/Your_project_Name.git master

- konfiguracja upstream: informuje git o ścieżce do pochodzenia. Jeśli Git wcześniej wypchnął Twoją aktualną gałąź, zapamięta, gdzie jest początek

master : jest to nazwa gałęzi, do której chcę przekazać podczas inicjalizacji


dzięki, to zadziałało dla mnie
Chamath Viranga

3

Jeśli korzystasz z udostępnionego komputera, używanie własnego hasła lub klucza prywatnego bez hasła może być przesadą. Bezpieczniejszą opcją jest token dostępu:

  1. Idź do Ustawienia, Ustawienia programistów, osobisty tokenów dostępowych
  2. Wygeneruj nowy token.
  3. Zwróć uwagę, do czego służy token.
  4. Przyznaj dostęp do repozytorium .
  5. Sklonuj repozytorium:
$ git clone https://<token>@github.com/<user>/<repo>.git

Jeśli sklonowałeś już repozytorium, możesz po prostu zmodyfikować zdalne ustawienie:

$ git remote set-url origin https://<token>@github.com/<user>/<repo>.git
$ git pull
Already up to date.

2

Oto, jak rozwiązuję ten problem. Używałem Babun (mintty.exe) na Win7 / 10. Kiedy wypróbowałem wiele wyżej wymienionych rozwiązań i żadne z nich nie działa. Zdałem sobie sprawę, że może właśnie użyłem złego agenta SSH ... Więc biegnę, echo $GIT_SSHaby się dowiedzieć, pokazuje ścieżkę do Plink.exe. Właściwie to się spodziewałem, to OpenSSH.

Więc dodaję następującą jedną linijkę do ~/.zshrcpliku

Uwaga 1: Możesz go również uruchomić bezpośrednio w babun.
Uwaga 2: Jeśli używasz basha, plik konfiguracyjny jest.bashrc

export GIT_SSH=$(which ssh)

I to działa!



2

Spróbuj https zamiast ssh. Wybierz opcję https ze strony głównej projektu, z której kopiujesz adres URL do klonowania.


2

Używam Ubuntu

po przeczytaniu wielu odpowiedzi żadna z nich nie może rozwiązać problemu, nawet jeśli już dodałem klucz SSH do mojego konta git i spróbuję go przetestować przy użyciu ssh -T git@gitlab.comi powiedział Welcome <my username>, ale nadal powtarzał mi, że nie mam praw dostępu. Wtedy znalazłem powód:

Zwykle, jeśli nie jesteś rootużytkownikiem, będzie to wymagało uruchomienia sudokażdego polecenia git.

podczas biegania sudo git clone <SSH....>(na przykład). zostanie wykonany z rootuprawnieniami, ale przypadkowo podczas tworzenia klucza SSH uruchamiam go jako zwykły użytkownik i zapisuję klucz w ~/.ssh/id_rsa, rozwiązuje ścieżkę bezwzględną /home/username/.ssh/id_rsa. A kiedy sudo git clone ...to robi , szuka klucza SSH w/root/.ssh/id_rsa

Dlaczego jestem tego pewien. Aby zobaczyć, gdzie git szuka Twojego klucza SSH. Uruchom komendę: sudo GIT_TRACE=1 GIT_SSH_COMMAND="ssh -vvv" git clone <your repository in SSH>. Pokaże ci, gdzie szuka twojego klucza SSH.

Więc ROZWIĄZANIE, które proponuję to:

Ponowne tworzenie klucza SSH (postępuj zgodnie z tą instrukcją ), ALE uruchom sudo suna pierwszym kroku, wtedy wszystko będzie dobrze.


Dzięki za to. To był mój dokładnie taki sam scenariusz
afolabiabass

1

Może się to również zdarzyć, jeśli łączysz się z repozytorium git przez VPN. Upewnij się, że masz połączenie z siecią VPN, która jest używana do uzyskiwania dostępu do zasobów Twojej organizacji.


1

U mnie miałem problem z firmowym VPN, po rozłączeniu działało dobrze.

Sprawdź połączenie z githubem za pomocą polecenia ssh -vvvT git@github.com


0

Alternatywnym problemem może być połączenie internetowe. Może to oczywiste, ale zajęło mi kilka minut, zanim zorientowałem się, że moje wifi nie działa :)


1
Zgodnie z komunikatem o błędzie nie wygląda na to, że problem dotyczy połączenia internetowego.
jbmusso

0

Podobnie jak w przypadku innych odpowiedzi, rozwiązaniem było użycie httpszamiast ssh.

Wpisuję odpowiedź, aby podać konkretny przykład możliwego rozwiązania. Rozwiązałem ten problem z bitbucket, kiedy zmieniłem zdalny adres URL na HTTPS za pomocą tego wiersza poleceń:

git remote set-url origin <bitbucket_URL>

Następnie mogłem wypchnąć zawartość do repozytorium za pomocą tego polecenia:

git push -u origin --all

A potem mógłbym też użyć Sourcetree


0

O dziwo otrzymałem ten błąd tylko w 1 z wielu moich repozytoriów.

Mój problem pojawił się po zainstalowaniu nowego GitHub Desktop dla Windows, w którym poprzedni stary GitHub for Win trzymał klucze ~/.ssh/github_rsai ~/.ssh/github_rsa.pubgdzie nowy GitHub for Win tego oczekuje, ~/.ssh/id_rsawięc rozwiązanie polegało tylko na zmianie nazwy istniejących kluczy prywatnych i publicznych:

~/.ssh/github_rsa -> ~/.ssh/id_rsa
~/.ssh/github_rsa.pub -> ~/.ssh/id_rsa.pub

Po czym pozwolę mi ponownie uzyskać dostęp do repozytorium bez problemu.


0

użyj źródła https zamiast ssh url

przykład:

git remote add origin  https://gitlab.com/user/folder.git

0

Dodanie klucza ssh zadziałało dla mnie. Możesz utworzyć klucz ssh za pomocą polecenia ssh-keygen na komputerze Mac. Powinieneś być w stanie zobaczyć menu Wdróż klucze w YourRepository> Ustawienia, nie zapomnij zaznaczyć opcji Zezwól na dostęp do zapisu.

zrzut ekranu menu kluczy wdrażania


0

Popełniłem bardzo częsty błąd. Skopiowałem za pomocą polecenia clip xclip -sel clip < ~/.ssh/id_rsa.pub, ale podczas wklejania do pola wprowadzania klucza na github, usunąłem ostatnią nową linię za pomocą backspace, co faktycznie zmieniło klucz publiczny.

Dlatego zawsze kopiuj i wklejaj publiczny klucz ssh bez usuwania ostatniej nowej linii.


0

Przejście na korzystanie z protokołu HTTPS działa. Najpierw przełącz się na klucze https zamiast ssh. git remote set-url origin

Następnie poprosi o nazwę użytkownika i hasło git.


0

Wystąpił ten problem, gdy miałem nieprawidłowy klucz RSA SSH i prawidłowy klucz SSH ED25519 na moim komputerze. Uważam, że Gitlab sprawdzał klucz RSA, zawodząc i zatrzymując się przed sprawdzeniem klucza ED25519.

Naprawiłem to, usuwając oba klucze, które miałem na swoim urządzeniu, i generując nowy RSA SSH, a także udostępniając go gitlab.

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.