Ktoś widział ten błąd i wiedział, co robić?
Korzystam z terminala, jestem w katalogu głównym, repozytorium GitHub istnieje i nie wiem, co teraz zrobić.
> git push -u origin master
Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
Odpowiedzi:
GitHub nie może Cię uwierzytelnić. Tak więc albo nie masz skonfigurowanego klucza SSH, ponieważ nie skonfigurowałeś go na swoim komputerze , lub twój klucz nie jest powiązany z kontem GitHub.
Możesz także użyć adresu URL HTTPS zamiast adresu URL SSH / git, aby uniknąć konieczności radzenia sobie z kluczami SSH. Jest to zalecana metoda GitHub .
Ponadto GitHub ma stronę pomocy specjalnie dla tego komunikatu o błędzie i wyjaśnia bardziej szczegółowo wszystko, co można sprawdzić.
źródło
ssh -vT [email protected]
ze strony pomocy Github, aby pomóc w debugowaniu klucza używanego przez twoje repo. Sugeruję dodanie go w swojej odpowiedzi.ssh -vT [email protected]
zapewnia wiele informacji, dlaczego nie działa.Czy utworzyłeś plik konfiguracyjny w swoim katalogu ~ / .ssh? Powinien zawierać takie treści:
Zakładając, że utworzyłeś klucz ssh o nazwie github_rsa
i przesłałem go do GitHub ...
UWAGA: Musisz postępować zgodnie z tą jawną konfiguracją, jeśli masz więcej niż 1 klucz (2 i więcej) w swoim katalogu ~ / .ssh /. Jeśli nie podasz klucza w ten sposób, pierwszy klucz w kolejności jest brany i używany do uwierzytelniania github, więc zależy to od nazwy pliku klucza.
źródło
ssh -T [email protected]
odpowiedzi są prawidłowe, agit push -u origin master
błąd jest taki sam jak w pytaniu. Dlaczego mogę się z nim prawidłowo połączyć, ale nie mogę się do niego naciskać ani pobierać?Znam ten problem. Po dodaniu klucza ssh dodaj również klucz ssh do agenta ssh (z oficjalnych dokumentów https://help.github.com/articles/generating-ssh-keys/ )
Po tym wszystko działa dobrze, git może wyświetlić odpowiedni klucz, zanim nie może.
źródło
ssh-agent -s
ssh-add ~/.ssh/github_rsa
Musisz wygenerować klucz SSH (jeśli go nie masz) i powiązać klucz publiczny ze swoim kontem Github. Zobacz własną dokumentację Githuba .
źródło
To mi się przydarzyło. Z jakiegoś powodu moje pochodzenie zostało pomieszane bez mojej świadomości:
Sprawdź, czy ustawienia są nadal prawidłowe
adres URL musi być podobny do ssh: //[email protected]/YourDirectory/YourProject.git; jeśli nie widzisz [email protected], użyj
naprawić to dobrze. Lub możesz użyć aplikacji github, aby sprawdzić i ustawić adres URL podstawowego zdalnego repozytorium w panelu ustawień konkretnego repozytorium.
źródło
Zakładając, że łączysz GitHub przez SSH, możesz uruchomić poniższe polecenie, aby to potwierdzić.
Jeśli otrzymasz wynik w następującym formacie [email protected]: xxx / xxx.github.com.git, wykonaj następujące czynności.
Wygeneruj klucz SSH (lub użyj istniejącego). jeśli tak, wystarczy dodać swój klucz do ssh-agent (krok 2) i do konta GitHub (krok 3).
poniżej są dla tych, którzy nie mają klucza SSH.
Krok 1 Generowanie publicznej / prywatnej pary kluczy rsa.
Zostaniesz poproszony o potwierdzenie, gdzie zapisać klucz SSH i jakiego hasła chcesz użyć.
Krok 2 Dodaj swój klucz do ssh-agent
Upewnij się, że ssh-agent jest włączony
$eval "$(ssh-agent -s)"
Dodaj swój klucz SSH do agenta ssh:
$ssh-add ~/.ssh/id_rsa
Krok 3 Dodaj swój klucz SSH do swojego konta
$sudo apt-get install xclip
$xclip -sel clip < ~/.ssh/id_rsa.pub
Następnie dodaj skopiowany klucz do GitHub
Przejdź do Ustawienia -> Klucze SSH (pasek boczny ustawień osobistych) -> Dodaj klucz SSH -> wypełnij formularz (klawisz znajduje się w schowku, po prostu użyj kombinacji klawiszy Ctrl + V) -> Dodaj klucz
Po wykonaniu powyższych kroków powinieneś rozwiązać problem z uprawnieniami.
Odnośnik: Generowanie kluczy SSH .
źródło
cat ~/.ssh/id_rsa.pub
Najpierw musimy sprawdzić istniejące klucze ssh na twoim komputerze. Otwórz terminal i uruchom:
i to wyświetli listę plików w twoim katalogu .ssh
I w końcu w zależności od tego, co widzisz (w moim przypadku było):
Spróbuj skonfigurować RSA i miejmy nadzieję, że rozwiąże to problemy związane z „git push origin”
$ ssh-keygen -lf ~/.ssh/github_rsa.pub
UWAGA: Certyfikaty RSA są sparowane z kluczami, więc będziesz mieć prywatny i publiczny certyfikat, prywatny nie będzie dla ciebie dostępny, ponieważ należy do github (w tym przypadku), ale publiczny jest tym, którego możesz przegapić, gdy wystąpi ten błąd (przynajmniej tak było w moim przypadku, moje konto gitub lub repozytorium jakoś pomieszało i musiałem „połączyć” klucz publiczny, wcześniej wygenerowany)
źródło
SHA
wyjściowe do github z tego polecenia?Otrzymałem ten błąd. Okazuje się, że właśnie uaktualniłem OSX do Sierra i mój stary klucz nie jest już zarejestrowany.
Na początku myślałem, że „Uaktualnienie do systemu macOS Sierra złamie twoje klucze SSH i zablokuje cię na własnych serwerach”
Ale ominąłem ten. Okazuje się, że musiałem ponownie zarejestrować mój istniejący klucz:
ssh-add -K
I wpisz hasło ... gotowe!
źródło
Inne rozwiązanie :
utwórz klucze SSH, wpisz
ssh-keygen -t rsa -C "[email protected]"
. Spowoduje to utworzenie plików id_rsa i id_rsa.pub.Dodaj id_rsa do listy ssh na komputerze lokalnym:
ssh-add ~/.ssh/id_rsa.
Po wygenerowaniu kluczy pobierz klucz pubkey za pomocą:
dostaniesz coś takiego:
skopiuj ten klucz (wartość) i przejdź do github.com, a pod ustawieniem (klucz ssh i pgp) dodaj swój klucz publiczny.
źródło
W przypadku, gdy nie masz dostępu do własnego repozytorium lub klonujesz wewnątrz sklonowanego repozytorium (używając niektórych poleceń „git submodule ...”):
W katalogu domowym swojego repozytorium:
1. Otwórz „.gitmodules”, a znajdziesz coś takiego:
Zmień ostatnią linię na HTTPS repozytorium, które chcesz pobrać:
Zapisz „.gitmodules” i uruchom komendę dla submodułów, a „.git” zostanie zaktualizowane.
2. Otwórz plik „.git”, przejdź do pliku „config”, a znajdziesz coś takiego:
Zmień ostatnią linię na HTTPS repozytorium, które chcesz pobrać:
Tak więc w tym przypadku głównym problemem jest po prostu adres URL. HTTPS dowolnego repozytorium można teraz znaleźć na górze strony repozytorium.
źródło
to działało dla mnie:
1- usuń wszystkie źródła
(por. https://www.kernel.org/pub/software/scm/git/docs/git-remote.html )
* remote: „Zarządzaj zestawem repozytoriów („ pilotów ”), których gałęzie śledzisz.
* rm: „Usuń pilota o nazwie. Wszystkie gałęzie zdalnego śledzenia i ustawienia konfiguracji dla pilota zostały usunięte.”
2- sprawdź, czy wszystko zostało usunięte:
3- dodaj nowy wzorzec pochodzenia
to wszystko ludzie!
źródło
Upewnij się, że
ssh-add -l
pokazuje odcisk palca klucza SSH, który jest obecny na liście kluczy SSH na koncie Github.Jeśli dane wyjściowe są puste, ale wiesz, że masz prywatny klucz SSH, który działa z Twoim kontem github, uruchom go
ssh-add
na tym kluczu (znajduje się w~/.ssh
. Maid_rsa
domyślną nazwę , więc prawdopodobnie będziesz działaćssh-add id_rsa
).W przeciwnym razie postępuj zgodnie z tymi instrukcjami, aby wygenerować parę kluczy SSH.
źródło
Używałem github wcześniej do jednego z moich projektów php. Podczas korzystania z github używałem ssh zamiast https. Miałem tak skonfigurowaną maszynę i za każdym razem, gdy zatwierdzałem i wypychałem kod, pytało mnie o moje hasło klucza rsa.
Po kilku dniach przestałem pracować nad projektem php i zapomniałem hasła rsa. Ostatnio zacząłem pracować nad projektem Java i przeniosłem się do Bitbucket. Ponieważ zapomniałem hasła i nie ma sposobu, aby je odzyskać , postanowiłem użyć protokołu https (zalecanego) dla nowego projektu i otrzymałem ten sam błąd zadany w pytaniu.
Jak to rozwiązałem?
Uruchomiłem to polecenie, aby powiedzieć mojemu gitowi, aby używał https zamiast ssh:
Usuń ewentualny pilot
Powtórz wszystko od git init do git push i działa!
PS: Podczas procesu debugowania odinstalowałem również ssh z mojego komputera, myśląc, że usunięcie go rozwiąże problem. Tak, wiem!! :)
źródło
Problem rozwiązany, jeśli zmienisz dostęp ssh na dostęp https do zdalnego repozytorium:
źródło
Myślę, że mam najlepszą odpowiedź dla ciebie, twoje aplikacje git czytają twój id_rsa.pub w głównym katalogu użytkownika
Właśnie dlatego git nie może odczytać twojego klucza w /home/your_username/.ssh/id_rsa.pub. Musisz więc utworzyć klucz w /home/root/.ssh/
Następnie skopiuj klucz z konta github. To zadziałało dla mnie. Możesz tego spróbować.
źródło
Jeśli już utworzyłeś klucz SSH i nadal pojawia się błąd, to dlatego, że musisz dać użytkownikowi uprawnienia do odczytu i zapisu w folderze, do którego klonujesz. Aby to zrobić,
sudo chmod 777 <your_folder_name_here>"
. Oczywiście dzieje się tak po wygenerowaniu klucza SSH i nadal występuje ten błąd. Mam nadzieję, że pomoże to przyszłym użytkownikom.Edytować
Aby dodać do tego, użyj admin w Windows, jeśli używasz git bash
źródło
sudo chown -R $USER:$USER <your_folder_name_here>
Ostatnio miałem ten sam problem. Może to pomóc, jeśli potrzebujesz natychmiastowej poprawki, ale należy to zrobić przy każdym ponownym uruchomieniu systemu
Z terminalu uruchom:
ssh-add ~/.ssh/id_rsa
Wprowadź hasło systemowe, które powinno działać.
źródło
Chciałbym dodać niektóre z moich odkryć:
Jeśli używasz
GitBash
, upewnij się, że klucz SSH jest zapisany w~/.ssh/id_rsa
.Domyślnie
GitBash
szuka~/.ssh/id_rsa
jako domyślnej ścieżki klucza SSH.Nawet nazwa pliku ma
id_rsa
znaczenie. Jeśli zapiszesz klucz SSH w innej nazwie pliku lub ścieżce, spowoduje to zgłoszeniePermission Denied(publickey)
błędu.źródło
OK, istnieje kilka rozwiązań tego rozwiązania, niektóre z nich mogły już zostać wspomniane, ale tylko po to, aby zachować je razem:
upewnij się, że klucze są obecne, domyślnie inny folder ~ / .ssh /, tj. id.rsa i id.rsa.pub
upewnij się, że klucze mają odpowiednie uprawnienia, możesz uruchomić chmod:
chmod 600 ~ / .ssh / id_rsa
chmod 644 ~ / .ssh / id_rsa.pub
upewnij się, że zawartość twojego klucza publicznego (id_rsa.pub) odpowiada temu przesłanemu w konfiguracji zdalnego repozytorium
Na koniec napraw problemy z agentem ssh : ssh-add
Więcej informacji: https://itcodehub.blogspot.com/2015/01/ssh-add-problems-with-ssh-agent-and.html
źródło
chmod
tak, jak opisałeś. Dzięki.Jeśli korzystasz z interfejsu GitHub dla komputerów Mac, sprawdź preferencje, aby się zalogować.
źródło
Otrzymałem ten sam błąd podczas „git push”. Po stronie klienta miałem dwa pochodzenie i mistrz. Usunąłem jeden, a potem zadziałało dobrze.
źródło
możesz użyć adresu URL Https, aby się zalogować
myślę, że próbujesz zalogować się za pomocą ssh url, gdy mówisz git push, jeśli jako prośbę tylko o hasło rozważasz połączenie za pośrednictwem ssh. lepiej użyj http url.
źródło
Również w Ubuntu, mimo że w ustawieniach BitBucket wprowadzono już klucz SSH, mam ten problem. Powodem było to, że próbowałem:
Nie jestem pewien, dlaczego, ale problem został rozwiązany za pomocą
Nie używano sudo.
źródło
Dla mnie próbowałem tego -
wtedy biegnę
i do generowania klucza możesz uruchomić
wygeneruje to parę kluczy (publiczny i prywatny).
możesz zapisać ten klucz w github, aby przeczytać więcej. Dodawanie nowego klucza SSH do konta GitHub
Mam nadzieję, że pomoże innym :)
źródło
Miałem podobny problem do @Batman. Ponieważ jednak działałem pod / usr / local / src / projectname, uruchomienie bez sudo nie było opcją.
Wystarczy dodać flagę -E, aby zachować środowisko (swoją ścieżkę ~ / .ssh /).
$ sudo -E git clone git@your_repo
Od man sudo:
źródło
Jednym ze scenariuszy, w których tak się stanie, jest wykonanie instrukcji GitHub po utworzeniu repozytorium. Git poinstruuje cię, abyś dodał pilota za pomocą czegoś takiego.
git remote add origin [email protected]:<user>/<project>.git
Zastąp zawartość <> wartościami powiązanymi z Twoim kontem.
Rozwiązaniem jest usunięcie
.git
przyrostka. Dodaj pilota w następujący sposób:git remote add origin [email protected]:<user>/<project>
źródło
tl; dr
na
~/.ssh/config
miejscuScenariusz Jeśli używasz wersji openSSH> 7, na przykład powiedz na pasku dotykowym MacBook Pro
ssh -V
OpenSSH_7.4p1, LibreSSL 2.5.0
Miałeś także starszy komputer Mac, który pierwotnie miał Twój klucz, który umieściłeś w Githubie, możliwe, że używasz klucza id_dsa. OpenSSH v7 nie wprowadza domyślnie użycia tych kluczy DSA (które to obejmują
ssh-dss
), ale nadal możesz dodać go z powrotem, umieszczając następujący kod w swoim~/.ssh/config
Źródłem, które działało dla mnie, jest ten biuletyn Gentoo
Teraz możesz przynajmniej użyć GitHub, a następnie naprawić klucze do RSA.
źródło
Znalazłem tę stronę podczas wyszukiwania rozwiązania podobnego komunikatu o błędzie używanego
git pull
na zdalnym hoście:Byłem połączony z mojego komputera lokalnego do zdalnego hosta przez
ssh -AY remote_hostname
. To nie jest rozwiązanie pytania OP, ale jest przydatne dla innych osób, które natkną się na tę stronę, więc opublikuj je tutaj.Zauważ, że w moim przypadku
git pull
działa dobrze na moim komputerze lokalnym (to znaczy, że klucz ssh został skonfigurowany i dodany do konta GitHub itp.). Rozwiązałem problem, dodając to do~/.ssh/config
mojego laptopa:Następnie ponownie nawiązałem połączenie z hostem zdalnym
ssh -AY remote_hostname
igit pull
już działałem. Zmiana konfiguracji umożliwia przekazanie pary kluczy ssh z mojego komputera lokalnego do dowolnego hosta.-A
Opcjassh
faktycznie przekazuje go w tej sesji ssh. Zobacz więcej szczegółów tutaj.źródło
Może twój agent ssh nie jest włączony. Możesz spróbować
http://git-scm.com/
Zainstaluj to
Włącz ssh-agent
C: \ Program Files \ Git \ cmd
start-ssh-agent
źródło
Przejdź do pulpitu nawigacyjnego konta GitHub, znajdź repozytorium projektu, kliknij kartę Ustawienia - w obszarze Wdróż klucze musisz dodać klucz SSH. Otwórz terminal i wpisz:
Spowoduje to skopiowanie klucza z pliku id_rsa.pub. Wróć więc do pulpitu nawigacyjnego GitHub, wklej go, kliknij Dodaj klucz i to wszystko.
To samo rozwiązanie dotyczy kont Bitbucket.
źródło