Próbowałem googlować i przeczytać https://help.github.com/en/articles/connecting-to-github-with-ssh i różne, różne przewodniki. Nie mogę git push -u origin master
lub git push origin master
(to samo polecenie).
Konto git mam od co najmniej 2 lat. Udało mi się utworzyć repozytoria i push -u origin master
dobrze na moim laptopie, ale na tym komputerze mam problemy.
Oto, czego próbowałem:
1. Skonfigurowałem nazwę użytkownika git
2. Skonfigurowałem adres e-mail użytkownika git
3. Umieściłem zawartość mojego /home/meder/.ssh/id_rsa.pub na stronie konta github. Sprawdziłem, że nie wkleiłem żadnych spacji
4. Utworzyłem plik ~ / .ssh / config z następującą zawartością:
Host github.com
User git
Hostname github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Chmodowałem .ssh do 700, id_rsa 600
5. Dodałem właściwe zdalne źródło bez robienia literówek :git remote add origin [email protected]:medero/cho.git
6. Aby potwierdzić # 5, oto mój plik .git / config. Katalog jest poprawny i nie jest to inny katalog:
[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/*
url = [email protected]:medero/cho.git
7. ssh [email protected] -v
daje mi pomyślne uwierzytelnienie
8. Jedną dziwną rzeczą jest to, że nazwa użytkownika, którą mnie wita, została t
do niego dołączona. Moja nazwa użytkownika github to medero
nie medert
.
Cześć mederot! Udało Ci się uwierzytelnić, ale GitHub nie zapewnia dostępu do powłoki.
9. Ja nie za serwerem proxy lub zapory
10. Klucz jest oferowany, oto wyjście z -v
:
debug1: Host 'github.com' is known and matches the RSA host key. debug1: Found key in /home/meder/.ssh/known_hosts:58 debug1: ssh_rsa_verify: signature correct debug1: SSH2_MSG_NEWKEYS sent debug1: expecting SSH2_MSG_NEWKEYS debug1: SSH2_MSG_NEWKEYS received debug1: SSH2_MSG_SERVICE_REQUEST sent debug1: SSH2_MSG_SERVICE_ACCEPT received debug1: Authentications that can continue: publickey debug1: Next authentication method: publickey debug1: Offering public key: /home/meder/.ssh/id_rsa debug1: Remote: Forced command: gerve mederot debug1: Remote: Port forwarding disabled. debug1: Remote: X11 forwarding disabled. debug1: Remote: Agent forwarding disabled. debug1: Remote: Pty allocation disabled. debug1: Server accepts key: { some stuff, dont know if i should share it debug1: Remote: Forced command: gerve mederot debug1: Remote: Port forwarding disabled. debug1: Remote: X11 forwarding disabled. debug1: Remote: Agent forwarding disabled. debug1: Remote: Pty allocation disabled. debug1: Authentication succeeded (publickey).
11. Oto polecenia, których użyłem
mkdir cho
git init
touch README
git add README
git commit -m 'test'
git remote add origin [email protected]:medero/cho.git
git push -u origin master
12. Nie chcę tworzyć nowego klucza SSH.
13. Jeśli git clone przy użyciu ssh i edytuję, zatwierdzam i git push, otrzymuję dokładnie to samo.
14. Oto rzeczywisty błąd:
$ git push
ERROR: Permission to medero/cho.git denied to mederot.
fatal: The remote end hung up unexpectedly
15. Skonfigurowałem nazwę użytkownika github i token github:
$ git config --global github.user medero $ git config --global github.token 0123456789yourf0123456789token Ustawia token GitHub dla wszystkich instancji git w systemie
16. Potwierdziłem, że moja nazwa użytkownika github NIE jest, mederot
a mój token Github JEST PRAWIDŁOWY na stronie mojego konta (sprawdzone pierwsze 2 znaki i ostatnie 2 znaki).
17. Aby potwierdzić # 16, ~ / .gitconfig zawiera
[github]
token = mytoken...
user = medero
18. Zrobiłem, ssh-key add ~/.ssh/id_rsa
jeśli to było konieczne ...
TEORIE:
Podejrzewam, że jest coś podejrzanego, ponieważ po uwierzytelnieniu przez ssh powitanie użytkownika jest, mederot
a nie medero
, co jest moim kontem. Czy coś na moim koncie github mogło zostać nieprawidłowo zapisane w pamięci podręcznej?
Podejrzewam również dziwne zachowanie lokalnego buforowania ssh, ponieważ jeśli ja mv ~/.ssh/id_rsa KAKA
i tak mv ~/.ssh/id_rsa.pub POOPOO
zrobię ssh [email protected] -v
, nadal uwierzytelnia mnie i mówi, że obsługuje mój /home/meder/.ssh/id_rsa, kiedy zmieniam jego nazwę ?! To musi być buforowane ?!
Odpowiedzi:
Zakładam, że w kroku 18 masz na myśli
ssh-add ~/.ssh/id_rsa
? Jeśli tak, to wyjaśnia to:... ponieważ
ssh-agent
buforuje twój klucz.Jeśli spojrzysz na GitHub, jest tam konto mederot . Czy na pewno nie ma to z tobą nic wspólnego? GitHub nie powinien zezwalać na dodanie tego samego klucza publicznego SSH do dwóch kont, ponieważ gdy używasz
[email protected]:...
adresów URL, identyfikuje użytkownika na podstawie klucza SSH. (To nie powinno być dozwolone jest potwierdzona tutaj ).Podejrzewam więc (w kolejności malejącego prawdopodobieństwa), że zachodzi jeden z poniższych przypadków:
Jeśli nie ma 1, zgłosiłbym to do GitHub, aby mogli sprawdzić około 2 lub 3.
Więcej :
ssh-add -l sprawdź, czy istnieje więcej niż jeden identyfikator, jeśli tak, usuń go przez ssh-add -d "ten plik klucza"
źródło
ssh-add ...
każdym razem, gdy chcę zmienić logowanie na github / ssh.ssh-add -d <keyfile>
nie działa. (Ręczne usuwanie plików tak się stało.) Wspomniane buforowanie musi zostać w jakiś sposób ręcznie załadowane ponownie. W jaki sposób?ssh-add -d
-> „Nie udało się nawiązać połączenia z agentem uwierzytelniającym”.ssh-add
był ten kawałek, który zrobił to dla mnie. Dzięki!Po kilku dniach szukania w Google stwierdziłem, że jest to jedyne pytanie podobne do mojej sytuacji.
Jednak właśnie rozwiązałem problem! Dlatego zamieszczam tutaj moją odpowiedź, aby pomóc każdemu, kto szuka tego problemu.
Oto co zrobiłem:
Otwórz „Keychain Access.app” (możesz go znaleźć w Spotlight lub LaunchPad)
Wybierz „Wszystkie elementy” w kategorii
Wyszukaj „git”
Usuń każdy stary i dziwny element
Spróbuj ponownie Push i po prostu DZIAŁAŁO
źródło
old & strange
. Mam zamiar zepsuć mnóstwo rzeczy ..?old & strange
rzeczy oznaczają stare pozycje z datą i nieprawidłowy adres e-mail lub nazwę użytkownika. Możesz sortować tabelę wedługDate Modified
.Jeśli problem pojawia się w systemie Windows, usuń poświadczenia z historii systemu Windows.
usuń poświadczenia z git
źródło
Na komputerze Mac, jeśli masz wiele loginów GitHub i nie używasz SSH, wymuś poprawne logowanie, używając:
Działa to również, jeśli masz problemy z wypychaniem do prywatnego repozytorium.
źródło
To z powodu konfliktu.
Usuń wszystkie klucze z ssh-agent
Dodaj klucz github ssh
Teraz powinno działać.
źródło
ssh-add -D
usuwa również wszystkie tożsamości, może być przydatne, jeśli agent przejdzie w nieprawidłowy stan.Używam komputera Mac i problem został rozwiązany przez usunięcie rekordu github z aplikacji dostępu do pęku kluczy: Oto, co zrobiłem:
Powyższe kroki zostały skopiowane z @spyar dla ułatwienia.
źródło
Uważam, że rozwiązanie jest takie samo, jak zapewnia @spyar, czyli aplikacja Dostęp do pęku kluczy przechowująca starą nazwę użytkownika.
Istnieją 2 rozwiązania tej sytuacji:
Lub
w
Mam nadzieję że to pomoże.
źródło
Niedawno napotkałem ten problem na starym repozytorium na moim komputerze, które zostało przesłane za pomocą protokołu HTTPS. kroki 5 i 6 rozwiązały mój problem przez ponowne ustawienie zdalnego adresu URL dla mojego repozytorium z używania adresu URL https na adres URL ssh
sprawdzanie, czy pilot używa adresu URL https
następnie ustaw ponownie źródło, aby użyć adresu URL ssh
weryfikacja nowego pilota
mógł teraz z powodzeniem
git push -u origin
Nadal nie jestem pewien, jakie ustawienie zmieniłbym, co mogło spowodować niepowodzenie wypychania, gdy pilot jest ustawiony na https, ale to było rozwiązanie mojego problemu
źródło
Miałem ten sam problem co Ty. Po długim czasie spędzonym na wyszukiwaniu w Google odkryłem, że mój błąd był spowodowany przez wielu użytkowników, którzy dodali ten sam klucz do swoich kont.
Oto moje rozwiązanie: usuń klucz ssh niewłaściwego użytkownika (mogę to zrobić, ponieważ zły użytkownik jest również moim kontem). Jeśli niewłaściwy użytkownik nie jest Twoim kontem, być może będziesz musiał zmienić swój klucz SSH, ale nie sądzę, aby to się stało.
Myślę, że przyczyną problemu może być błędny wpis w nazwie Twojego konta.
źródło
Ten problem jest również spowodowany:
Jeśli korzystasz z Maca / Linuksa i używasz 'ControlMaster' w swoim ~ / .ssh / config, może być uruchomionych kilka głównych procesów sterujących ssh.
Aby je znaleźć, biegnij:
I zabij odpowiednich.
źródło
Ja też natknąłem się na to, co spowodowało to dla mnie, że podczas klonowania repozytorium, do którego wysyłałem swoje zmiany, podniosłem klonowany adres URL z karty incognito bez logowania się. (Nadal nie mam pojęcia, jak to działa). To z jakiegoś powodu doprowadziło do wybrania innego konta użytkownika. Kiedy spróbowałem ponownie z prawidłowo zalogowanej strony, działało jak zwykle.
źródło
Napotkałem ten błąd podczas używania Travis CI do wdrażania treści , co wiązało się z przesyłaniem zmian do repozytorium.
Ostatecznie rozwiązałem problem, aktualizując osobisty token dostępu GitHub powiązany z kontem Travis z
public_repo
uprawnieniem dostępu do zakresu:źródło