Komunikat o błędzie GitHub - Odmowa dostępu (publickey)


701

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.



1
Mogą występować problemy z uprawnieniami do kluczy .ssh i authoirzed. Ssh jest dość surowe, google.
Karl Morrison


jak odpowiedź @bdukes tutaj to polecenie korzystające z https i będzie działać, na przykład Windows: „PS C: \ xampp \ htdocs> git clone github.com/algolia/instant-search-demo.git
Dung

Odpowiedzi:


662

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ć.


53
Ten błąd nie dotyczy wyłącznie GitHub. Otrzymuję ten sam błąd z BitBucket i drapię się po głowie, jak go rozwiązać ...
IgorGanapolsky

32
Część pomocnicza korzysta ssh -vT git@github.comze strony pomocy Github, aby pomóc w debugowaniu klucza używanego przez twoje repo. Sugeruję dodanie go w swojej odpowiedzi.
MaximeBernard,

25
Opinia o użyciu HTTPS zamiast SSL jest nieco rozczarowująca. SSH jest znacznie wygodniejszy. Sugestia z @MaximeBernard powyżej rozwiązała dla mnie problem: GIT nie szukał odpowiedniego miejsca na katalog .ssh. Korzystanie ssh -vT git@github.comzapewnia wiele informacji, dlaczego nie działa.
Christophe

1
zgodnie z moim komentarzem powyżej trzecią opcją jest wysłanie polecenia z konta innego niż konto z kluczami ssh (np. działające jako root).
David LeBauer,

1
Jak wspomniano @ theapache64: Jeśli korzystasz z komputera Mac i już wygenerowałeś klucz ssh, „ssh-add” może być rzeczywiście tym, czego brakuje. Pracował dla mnie.
Cyfrowa nietrwałość

78

Czy utworzyłeś plik konfiguracyjny w swoim katalogu ~ / .ssh? Powinien zawierać takie treści:

Host github.com 
 IdentityFile ~/.ssh/github_rsa

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.


1
Wygenerowałem klucz ssh i byłem w stanie działać dobrze, przez dłuższy czas, bez żadnych problemów. Pewnego pięknego dnia (prawdopodobnie po restarcie) przestał działać, podczas gdy klucz był nienaruszony w github i w moim systemie lokalnym. Dodałem „plik konfiguracyjny”, określając klucz zamapowany na domenę. Szczegóły podane powyżej w odpowiedzi Igora-Ganapolskiego. To działa dobrze !
parasrish

3
To rzeczywiście rozwiązuje mój problem! Wielkie dzięki! Ale mam pytanie Przed użyciem tej metody ssh -T git@github.comodpowiedzi są prawidłowe, a git push -u origin masterbłą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ć?
Eden Harder

@EdenHarder Mam do czynienia z tym samym problemem. Znalazłeś odpowiedź na to?
Vreddhi Bhat

64

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/ )

ssh-agent -s
ssh-add ~/.ssh/id_rsa

Po tym wszystko działa dobrze, git może wyświetlić odpowiedni klucz, zanim nie może.


5
Prefekt! Pracowałem na moim MacOS X.
stillatmylinux

9
Nie można otworzyć połączenia z agentem uwierzytelniającym.
Mona Jalal

spróbuj uruchomić to: evalssh-agent -s
Vincent acent

@MonaJalal usessh-add ~/.ssh/github_rsa
Anirban Nag 'tintinmj'

Doskonały. to działa. Dziękuję Ci. 👌
Erkam KUCET

62

Musisz wygenerować klucz SSH (jeśli go nie masz) i powiązać klucz publiczny ze swoim kontem Github. Zobacz własną dokumentację Githuba .


2
Dzięki za to ... Mam teraz klucz SSH wygenerowany z GitHub. Jakiego polecenia używa się teraz do skojarzenia tych dwóch w terminalu? Dzięki!
webwrks

2
Nie ma do tego polecenia terminalu. Zobacz krok 4 w dokumentacji, którą umieściłem w mojej odpowiedzi.
cdhowie

Sklonowałem repozytorium za pomocą HTTPS. Czy w takim przypadku muszę wygenerować klucz SSH?
Pabitra Dash

@PabitraDash Nie. HTTPS nie używa kluczy SSH.
cdhowie

51

To mi się przydarzyło. Z jakiegoś powodu moje pochodzenie zostało pomieszane bez mojej świadomości:

Sprawdź, czy ustawienia są nadal prawidłowe

git remote -v

adres URL musi być podobny do ssh: //git@github.com/YourDirectory/YourProject.git; jeśli nie widzisz git@github.com, użyj

git remote set-url origin git://github.com/YourDirectory/YourProject.git

naprawić to dobrze. Lub możesz użyć aplikacji github, aby sprawdzić i ustawić adres URL podstawowego zdalnego repozytorium w panelu ustawień konkretnego repozytorium.


9
Uważaj na adresy URL. Różnią się między https i ssh, a posty na tej stronie nie wyjaśniają tego. Każdy projekt git ma plik .git / config w katalogu głównym projektu. Tam możesz ustawić informacje o zdalnym i oddziale. Ustawianie pilota dla https: url = github.com/<twojGitUserName>/<twojGitProject>.git Podczas gdy dla git + ssh: url = git@github.com: <yourGitUserName> / <yourGitProject> .git Błędny adres URL powoduje uprawnienia do klucza publicznego odmówiono błędu, który prawdopodobnie nie jest bardzo wyraźnym błędem.
darKoram

w moim przypadku w finale po prostu działa w części: git remote set-url origin github.com/your_directory/your_project.git
rld

19

Zakładając, że łączysz GitHub przez SSH, możesz uruchomić poniższe polecenie, aby to potwierdzić.

$git config --get remote.origin.url

Jeśli otrzymasz wynik w następującym formacie git@github.com: 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.

$ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

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 .


To rozwiązanie działało na Ubuntu, $ ssh-add /root/.ssh/id_rsa
Feras

To rozwiązało również dziwny bałagan w moim środowisku, jedną modyfikacją, którą zasugerowałem, jest uniknięcie zależności xclip, po prostu użyjcat ~/.ssh/id_rsa.pub
Pogrindis

19

Najpierw musimy sprawdzić istniejące klucze ssh na twoim komputerze. Otwórz terminal i uruchom:

ls -al ~/.ssh

#or

cd ~/.ssh
ls

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):

 github_rsa  github_rsa.pub known_hosts

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)


Czy muszę skopiować dane SHAwyjściowe do github z tego polecenia?
IgorGanapolsky

Nie, po prostu uruchom „ssh-keygen -lf ~ / .ssh / <YOUR_GITHUB_RSA_FILE.pub>”
d1jhoni1b

dlatego też załączyłem polecenie, które „wyświetla listę plików w katalogu .ssh” ... dzięki czemu wiesz, z którego pliku wyodrębnić swój klucz (ssh-keygen). Pamiętaj, że 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 to ten, którego możesz przegapić, gdy wystąpi ten błąd ( przynajmniej tak było w moim przypadku, moje konto github lub repozytorium zostało w jakiś sposób pomieszane i musiałem ponownie „połączyć” klucz publiczny, wcześniej wygenerowany, ponownie)
d1jhoni1b

$ ssh-keygen -lf ~ / .ssh / github_rsa.pub /home/mona/.ssh/github_rsa.pub: Brak takiego pliku lub katalogu
Mona Jalal

„Brak takiego pliku lub katalogu” oznacza, że ​​nie masz tej nazwy pliku lub ścieżki ... co otrzymujesz po uruchomieniu ls -al ~ / .ssh?
d1jhoni1b

14

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!


2
ten sam problem, działał dla mnie: `ssh-add -K ~ / .ssh / id_rsa`
mvladk

11

Inne rozwiązanie :

utwórz klucze SSH, wpisz ssh-keygen -t rsa -C "your_email@example.com". 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ą:

cat ~/.ssh/id_rsa.pub 

dostaniesz coś takiego:

cat ~/.ssh/id_rsa.pub 

ssh-rsa AAAB3NzaC1yc2EAAAADAQABAAACAQCvMzmFEUPvaA1AFEBH6zGIF3N6pVE2SJv9V1MHgEwk4C7xovdk7Lr4LDoqEcqxgeJftwWQWWVrWWf7q9qCdHTAanH2Q5vx5nZjLB+B7saksehVOPWDR/MOSpVcr5bwIjf8dc8u5S8h24uBlguGkX+4lFJ+zwhiuwJlhykMvs5py1gD2hy+hvOs1Y17JPWhVVesGV3tlmtbfVolEiv9KShgkk3Hq56fyl+QmPzX1jya4TIC3k55FTzwRWBd+IpblbrGlrIBS6hvpHQpgUs47nSHLEHTn0Xmn6Q== user@email.com

skopiuj ten klucz (wartość) i przejdź do github.com, a pod ustawieniem (klucz ssh i pgp) dodaj swój klucz publiczny.


10

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:

$ ls -a

1. Otwórz „.gitmodules”, a znajdziesz coś takiego:

[submodule "XXX"]
    path = XXX
    url = git@github.com:YYY/XXX.git

Zmień ostatnią linię na HTTPS repozytorium, które chcesz pobrać:

[submodule "XXX"]
    path = XXX
    https://github.com/YYY/XXX.git

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:

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
    ignorecase = true
    precomposeunicode = true
[remote "origin"]
    url = https://github.com/YYY/XXX.git
    fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
    remote = origin
    merge = refs/heads/master
[submodule "XXX"]
    url = git@github.com:YYY/XXX.git

Zmień ostatnią linię na HTTPS repozytorium, które chcesz pobrać:

    url = https://github.com/YYY/XXX.git

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.


9

to działało dla mnie:

1- usuń wszystkie źródła

git remote rm origin  

(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:

git remote -v  

3- dodaj nowy wzorzec pochodzenia

git remote add origin git@github.com:YOUR-GIT/YOUR-REPO.git

to wszystko ludzie!


1
Dzięki tym poleceniom zacząłem prosić o nazwę użytkownika i hasło do konta github, po czym mogę łatwo wcisnąć łącze github według typu terminala: master git push -u origin
Noha Salah

8

Upewnij się, że ssh-add -lpokazuje 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-addna tym kluczu (znajduje się w ~/.ssh. Ma id_rsadomyś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.


8

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?

  1. Uruchomiłem to polecenie, aby powiedzieć mojemu gitowi, aby używał https zamiast ssh:

    git config --global url."https://".insteadOf git://
    
  2. Usuń ewentualny pilot

    git remote rm origin
    
  3. 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!! :)


Nie sądzę, że dobrym pomysłem jest kierowanie ludzi w stronę https, gdy ma działać również ssh. Ponadto jest mało prawdopodobne, aby działało to dla osób stojących za korporacyjnym proxy.
Igor Stoppa

8

Problem rozwiązany, jeśli zmienisz dostęp ssh na dostęp https do zdalnego repozytorium:

git remote set-url origin https_link_to_repository

git push -u origin master

5

Myślę, że mam najlepszą odpowiedź dla ciebie, twoje aplikacje git czytają twój id_rsa.pub w głównym katalogu użytkownika

/home/root/.ssh/id_rsa.pub

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/

$ sudo su
$ ssh-keygen
$ cd ~/.ssh
$ cat id_rsa.pub

Następnie skopiuj klucz z konta github. To zadziałało dla mnie. Możesz tego spróbować.


To pozwoliło mi znaleźć odpowiedź, której szukałem. Zacząłem klonować sudo z przyzwyczajenia, więc szukał niewłaściwych danych uwierzytelniających. Zdjąłem sudo i mój klon uciekł dobrze.
Taekahn

4

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


To. Może to również powodować problem.
KevinO

1
To był mój problem, ale nie zalecałbym ustawiania uprawnień 777 na folder. W moim przypadku folder był własnością użytkownika root i musiałem dać mu dostęp do mojego konta użytkownika innego niż root. Zrobiłem to tak:sudo chown -R $USER:$USER <your_folder_name_here>
David

@David, również to polecam. 777 jest dość zuchwały i nie jest bezpieczny.
Kevin

3

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ć.


3

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 GitBashszuka ~/.ssh/id_rsajako domyślnej ścieżki klucza SSH.

Nawet nazwa pliku ma id_rsaznaczenie. Jeśli zapiszesz klucz SSH w innej nazwie pliku lub ścieżce, spowoduje to zgłoszenie Permission Denied(publickey)błędu.


3

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


Skopiowałem mój klucz ssh z jednego komputera na drugi, używając dysku USB sformatowanego jako FAT32. To zmieniło uprawnienia do plików. Na Ubuntu jestem przyzwyczajony do automatycznego proszenia o hasło SSH, gdy jest to potrzebne, ale to po prostu cicho nie zdarzyło się, dopóki nie uruchomiłem się chmodtak, jak opisałeś. Dzięki.
lydell

1

Jeśli korzystasz z interfejsu GitHub dla komputerów Mac, sprawdź preferencje, aby się zalogować.


1

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.


1

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.


1

Również w Ubuntu, mimo że w ustawieniach BitBucket wprowadzono już klucz SSH, mam ten problem. Powodem było to, że próbowałem:

sudo git push origin master

Nie jestem pewien, dlaczego, ale problem został rozwiązany za pomocą

git push origin master

Nie używano sudo.


1

Dla mnie próbowałem tego -

eval "$(ssh-agent -s)"

wtedy biegnę

ssh-add ~/.ssh/path-to-the-keyfile

i do generowania klucza możesz uruchomić

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

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 :)


1

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:

-E, --preserve-env Wskazuje w polityce bezpieczeństwa, że ​​użytkownik chce zachować istniejące zmienne środowiskowe. Polityka bezpieczeństwa może zwrócić błąd, jeśli użytkownik nie ma uprawnień do ochrony środowiska.


1

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 git@github.com:<user>/<project>.git

Zastąp zawartość <> wartościami powiązanymi z Twoim kontem.

Rozwiązaniem jest usunięcie .gitprzyrostka. Dodaj pilota w następujący sposób:

git remote add origin git@github.com:<user>/<project>


1

tl; dr

na ~/.ssh/configmiejscu

PubkeyAcceptedKeyTypes=+ssh-dss

Scenariusz Jeśli używasz wersji openSSH> 7, na przykład powiedz na pasku dotykowym MacBook Prossh -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

PubkeyAcceptedKeyTypes=+ssh-dss

Ź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.


1

Znalazłem tę stronę podczas wyszukiwania rozwiązania podobnego komunikatu o błędzie używanego git pullna zdalnym hoście:

$ git pull
Permission denied (publickey).
fatal: Could not read from remote repository.

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

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 pulldział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/configmojego laptopa:

Host *
     ForwardAgent yes

Następnie ponownie nawiązałem połączenie z hostem zdalnym ssh -AY remote_hostnamei git pulljuż działałem. Zmiana konfiguracji umożliwia przekazanie pary kluczy ssh z mojego komputera lokalnego do dowolnego hosta. -AOpcja sshfaktycznie przekazuje go w tej sesji ssh. Zobacz więcej szczegółów tutaj.


0

Może twój agent ssh nie jest włączony. Możesz spróbować

  1. Pobierz git

http://git-scm.com/

  1. Zainstaluj to

  2. Włącz ssh-agent

C: \ Program Files \ Git \ cmd

start-ssh-agent


0

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:

cat ~/.ssh/id_rsa.pub | pbcopy 

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.

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.