Heroku „Permission denied (publickey) fatal: Could not read from remote repository” nieszczęścia

139

Szukałem w pobliżu przez wiele godzin, szukając rozwiązania mojego pozornie łatwego do rozwiązania problemu. Nie chodzi o to, że moje wyszukiwanie nic nie przyniosło, po prostu moje wyszukiwanie znalazło tak wiele różnych rozwiązań - z których żadne nie zadziałało.

W każdym razie po prostu nie mogę pchać, wyciągać ani pobierać z mojego repozytorium Heroku z mojego Maca. Każda próba daje mi (jakby mnie kpiła) następujący błąd:

„Odmowa pozwolenia (publickey). fatal: nie można odczytać ze zdalnego repozytorium. '

Próbowałem (i próbowałem ponownie) naprawić to na wiele różnych sposobów. Jak powiedziałem, spędziłem dużą część ostatnich dwóch dni szukając odpowiedzi. Oto kilka rzeczy, które wypróbowałem:

  • Klawisze heroku: wyczyść, a następnie klawisze heroku: dodaj
  • Samodzielne regenerowanie klucza ssh za pomocą polecenia „ssh-keygen -t rsa”
  • Czyszczenie mojego katalogu .ssh, po którym następują klucze heroku: clear, a następnie generowanie klucza ssh
  • Usunięcie mojej aplikacji na heroku i odtworzenie jednej (na szczęście niewiele tam było)

Mogę pobrać dane z repozytorium GitHub w porządku, więc wiem, że to nie jest łączność sieciowa (działa również pingowanie heroku).

Jako prowizoryczne rozwiązanie (które, mam nadzieję, nie zmieni się w trwałe), zalogowałem się do mojej instancji Ubuntu Amazon AWS ec2. Ciągnięcie i pchanie do iz Heroku działa doskonale. Z tego powodu nadal czuję, że problem leży po stronie klawisza ssh na moim Macu. Oba klucze pojawiają się na moim koncie Heroku. Czy adres e-mail na końcu klucza ma znaczenie?

EDYCJA: Mogę w porządku push i pull z GitHub (jednak nie używam ssh), więc dlaczego nie Heroku?

W tym momencie jestem gotów spróbować wszystkiego. Dzięki!

thebradbain
źródło
Czy ustawiłeś hasło do klucza heroku? I przypuszczam, że to ( stackoverflow.com/a/16753800/6309 ) nie pomaga? Lub podwójne sprawdzenie stackoverflow.com/a/16753800/6309
VonC
Niestety nadal odmawia pracy.
thebradbain
czasami dzieje się tak, gdy Heroku jest w trakcie konserwacji: status.heroku.com
Mavis

Odpowiedzi:

284

Wiem, że już na to odpowiedziano. Ale chciałbym dodać moje rozwiązanie, ponieważ może być pomocne dla innych w przyszłości.

Częstym błędem jest klucz: Permission denied (publickey). Możesz to naprawić, keys:addpowiadamiając Heroku o nowym kluczu.

W skrócie wykonaj następujące kroki: https://devcenter.heroku.com/articles/keys

Najpierw musisz utworzyć klucz, jeśli go nie masz:

ssh-keygen -t rsa

Po drugie musisz dodać klucz do Heroku:

heroku keys:add
Kris Hollenbeck
źródło
2
Dzięki kris, ktoś z przyszłości :) to działa dla mnie
Ahmad Ajmi
8
Klucze heroku: dodaj, że mój tutorial został pominięty ... dziękuję! :)
Ole Henrik Skogstrøm
Klucz musi zostać wygenerowany tylko wtedy, gdy go nie masz, w moim przypadku już miałem klucz i po prostu musiałem dodać klucz do heroku
joseramonc
4
Pierwsza jest niepotrzebna. heroku keys:addpomoże ci go stworzyć, jeśli nie masz klucza.
Mygod
Uruchom, ssh-keygen -t rsajeśli RSAnie zostanie wygenerowany, w przeciwnym razie heroku keys:addpowinno wystarczyć
Volatil3
122

Pomyślałem, że podzielę się tym, że znalazłem odpowiedź na swoje pytanie.

Opisanie mojego problemu sprawiło, że stał się on dla mnie jeszcze bardziej jasny, a ja dokładniej zbadałem, gdzie moim zdaniem leży mój problem: klucz ssh

Okazuje się, że miałem rację. Problem nie dotyczył samego klucza, ale raczej to, że nie dodałem go do listy znanych kluczy SSH mojego lokalnego komputera Mac. Więc mimo że moje konto Heroku miało załadowany prawidłowy klucz, mój Mac nie mógł się uwierzytelnić, ponieważ nie mógł znaleźć tego klucza na moim komputerze. Rozwiązanie?

ssh-add ~/.ssh/id_rsa
#and, to confirm it's been added to the known list of keys
ssh-add -l

Chciałbym przyznać https://help.github.com/articles/error-permission-denied-publickey za dobre referencje.

thebradbain
źródło
5
Dziękuję za twoją opinię, dokładniejszą do twojej sytuacji niż mój wstępny komentarz. +1
VonC,
4
W systemie Windows należy uruchomić Git Bash(kliknij folder prawym przyciskiem myszy) i uruchomić, ssh-agentco jest możliwe, uruchamiając `ssh-agent`(pamiętaj o zaznaczeniach wstecz), a następnie dodać klucz, jak opisano powyżej. Muszę to robić za każdym razem, gdy uruchamiam Git Bash/ ssh-agent, zapomina, co zostało dodane.
TWiStErRob
Zrobiłem to i nadal nie działało. Skończyło się na tym, że musiałem dodać zmienną środowiskową o nazwie HOME ustawioną do katalogu, w którym znajdował się mój folder .ssh
Justin
Dzięki - nigdy bym tego nie domyślił!
Mark Hansen
To rozwiązało mój problem, a nie wyższą głosowaną odpowiedzią, dzięki :)
Ryan Brodie
31

Miałem dokładnie ten sam błąd (w Windows 7), a przyczyna była inna. Rozwiązałem to w inny sposób, więc pomyślałem, że dodam tutaj przyczynę i rozwiązanie dla innych.

Mimo że błąd wydawał się wskazywać na heroku, tak naprawdę ten błąd mówił "Heroku can't get to the git repository". Przysięgałem, że mam te same klucze na wszystkich serwerach, ponieważ stworzyłem je i wrzuciłem do jednego po drugim w tym samym czasie.

Po spędzeniu na tym prawie dnia zdałem sobie sprawę, że ponieważ git pokazuje mi tylko odcisk palca, a nie rzeczywisty klucz. Nie udało mi się zweryfikować, czy klucz pasuje do tego na moim HD lub Heroku. Zajrzałem do pliku znanych hostów i zgadłem, co ... pokazuje klucze dla każdego serwera i wyraźnie widziałem, że klucze publiczne git i heroku nie pasują.

1) Usunąłem wszystkie pliki w moim folderze kluczy, klucz z github za pomocą ich strony internetowej oraz klucz z heroku za pomocą git bash i polecenia heroku keys:clear

2) Postępuj zgodnie z instrukcjami githuba tutaj aby wygenerować nową parę kluczy i przesłać klucz publiczny do git

3) za pomocą git bash- heroku keys:add przesłania tego samego klucza do heroku.

Teraz git push heroku master działa.

co za koszmar, mam nadzieję, że to komuś pomogło.

Bryan

Bryan Myers
źródło
1
Szarpałem się w tym, dopóki nie zobaczyłem twojego postu. Jak tylko stworzyłem te same klucze git i heroku, wszystko było dobrze. Ale nie rozumiem, dlaczego muszą być takie same.
Kishore Masand
Dziękuję za odpowiedź spędzoną wieki z tym problemem
Ivan Bacher
bardzo przydatny link do dokumentacji gita, wszystko działa idealnie
HotJard
To zadziałało dla mnie po kilku dniach próbowania tego. Jestem zaskoczony, że Heroku może pozostać w biznesie z tak nieprzyjemnym problemem z użytecznością. Powinien być na to łatwiejszy sposób.
Luke F.
Dziękuję Ci. Pracował dla mnie; tylko jedna rzecz: gdzieś w linku na githubie jest napisane „ssh-add”. Tam miałem problem, ale znalazłem rozwiązanie tutaj: stackoverflow.com/questions/17846529/…
Alin Ciocan
17

Problem, który miałem, polegał na tym, że używałem https tylko dla mojego konta GitHub. Musiałem się upewnić, że moje konto GitHub zostało skonfigurowane pod kątem dostępu przez ssh i że GitHub i heroku używają tych samych kluczy publicznych. Oto kroki, które podjąłem:

  1. Przejdź do katalogu ~ / .ssh i usuń id_rsa i id_rsa.pub, jeśli tam są. Zacząłem od nowych kluczy, chociaż może to nie być konieczne.

    $ cd ~/.ssh
    $ rm id_rsa id_rsa.pub
    
  2. Postępuj zgodnie z instrukcjami na gitHub, aby wygenerować klucze SSH
  3. Zaloguj się do heroku, utwórz nową witrynę i dodaj klucze publiczne:

    $ heroku login
    ...
    $ heroku create
    $ heroku keys:add
    $ git push heroku master
    
sjking
źródło
6

miałem ten sam przypadek na Linuksie Ubuntu i właśnie go naprawiłem, wydaje się, że system operacyjny był pomylony między /root/.ssh/ a home / user / .ssh / dir, co zrobiłem:

  1. usunął wszystkie klucze z katalogu root i home / user .shh.
  2. wygenerował nowy klucz , zwróć uwagę na ścieżkę tworzenia (/home/you/.ssh/id_rsa) lub (/root/.ssh/id_rsa)
  3. sprawdź klucze heroku heroku keys
  4. jeśli klucze tam są czyste heroku keys:clear
  5. heroku keys:add teraz tutaj, jeśli heroku nie mógł znaleźć klucza i poprosił o wygenerowanie go, dobrze, nie, a to oznacza, że ​​masz ten sam problem co mój, wykonaj polecenie add w ten sposób heroku keys:add /root/.ssh/id_rsa.pub ścieżka, którą dodasz, będzie tą, którą masz w kroku 2.
  6. spróbuj git push heroku masterteraz
oqx
źródło
3

Mój sposób na Windows 8

  1. Dodaj katalog z ssh-keygen do systemowej zmiennej PATH, zwykle C: \ Program Files (x86) \ Git \ bin

  2. Otwórz CMD, przejdź do C: \ Users \ Me \

  3. Wygeneruj klucz SSH ssh-keygen -t rsa

    Wpisz plik, w którym chcesz zapisać klucz (//.ssh/id_rsa): .ssh / id_rsa (zmień domyślną niepoprawną ścieżkę na .ssh / somegoodname_rsa)

  4. Dodaj klucz do Heroku heroku keys:add

    Wybierz utworzony klucz z listy

  5. Przejdź do katalogu aplikacji i napisz piękny kod

  6. Zainicjuj repozytorium git git init git add . git commit -m 'chore(release): v0.0.1

  7. Utwórz aplikację Heroku heroku create

  8. Wdróż swoją aplikację git push heroku master

  9. Otwórz swoją aplikację heroku open

Ivan Rave
źródło
2

Miałem podobny problem i próbowałem wielu rzeczy. Ostatecznie pomogło mi zainstalowanie Gnu w systemie Windows ( https://github.com/bmatzelle/gow/releases ) i upewnienie się, że używa narzędzia ssh w tym katalogu, a nie tego z Git. Po zainstalowaniu przetestuj za pomocą (upewnij się, że jest w twoim środowisku PATH, że poprzedza Git \ bin)

C:\Git\htest2>which ssh
C:\Program Files (x86)\Gow\bin\ssh.BAT

Użyłem szpachli i korowód, jak opisano tutaj: http://rubyonrailswin.wordpress.com/2010/03/08/getting-git-to-work-on-heroku-on-windows-using-putty-plink-pageant/

Po wysłaniu kluczy do heroku (klucze heroku: dodaj c: \ Users \ Person.ssh \ id_rsa.pub) użyj

ssh -v <username>@heroku.com 

i upewnij się, że Twój stos pokazuje użycie Putty - czyli stosu roboczego:

Looking up host "heroku.com"
Connecting to 50.19.85.132 port 22
Server version: SSH-2.0-Twisted
Using SSH protocol version 2
**We claim version: SSH-2.0-PuTTY_Release_0.62**
Using Diffie-Hellman with standard group "group1"
Doing Diffie-Hellman key exchange with hash SHA-1
Host key fingerprint is:
ssh-rsa 2048 8b:48:5e:67:0e:c9:16:47:32:f2:87:0c:1f:c8:60:ad
Initialised AES-256 SDCTR client->server encryption
Initialised HMAC-SHA1 client->server MAC algorithm
Initialised AES-256 SDCTR server->client encryption
Initialised HMAC-SHA1 server->client MAC algorithm
Pageant is running. Requesting keys.
Pageant has 1 SSH-2 keys
Using username "*--ommitted for security--*".
**Trying Pageant key #0**
Authenticating with public key "rsa-key-20140401" from agent
Sending Pageant's response
Access granted
Opened channel for session
Server refused to allocate pty
Server refused to start a shell/command
FATAL ERROR: Server refused to start a shell/command

Ten, który działał wcześniej i nie powiódł się:

C:\Git\htest2>ssh -v <username>@[email protected]
OpenSSH_4.6p1, OpenSSL 0.9.8e 23 Feb 2007
debug1: Connecting to heroku.com [50.19.85.156] port 22.
debug1: Connection established.
debug1: identity file /c/Users/Person/.ssh/identity type -1
debug1: identity file /c/Users/Person/.ssh/id_rsa type 1
debug1: identity file /c/Users/Person/.ssh/id_dsa type -1
debug1: Remote protocol version 2.0, remote software version Twisted
debug1: no match: Twisted
debug1: Enabling compatibility mode for protocol 2.0
**debug1: Local version string SSH-2.0-OpenSSH_4.6**
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-cbc hmac-md5 none
debug1: kex: client->server aes128-cbc hmac-md5 none
debug1: sending SSH2_MSG_KEXDH_INIT
debug1: expecting SSH2_MSG_KEXDH_REPLY
debug1: Host 'heroku.com' is known and matches the RSA host key.
debug1: Found key in /c/Users/Person/.ssh/known_hosts:1
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: Trying private key: /c/Users/Person/.ssh/identity
debug1: Offering public key: /c/Users/Person/.ssh/id_rsa
debug1: Server accepts key: pkalg ssh-rsa blen 277
debug1: Trying private key: /c/Users/Person/.ssh/id_dsa
debug1: No more authentication methods to try.
Permission denied (publickey).
user3484361
źródło
Wystarczy powiedzieć, że jest to system Windows 8 (8.1). Wydaje się również, że kluczem jest narzędzie ssh GoW, ponieważ mogłem go użyć bez kawałków kitu i użyć ssh-keygen.
user3484361
2

musisz utworzyć nowy klucz ssh, wpisując - ssh-keygen -t rsa

Następnie musisz dodać: - klucze heroku: dodaj

Następnie, jeśli wpiszesz - heroku otwórz

Problem został rozwiązany.

I tak mi się udało, możesz spróbować ...

nabin
źródło
2

Otrzymałem ten sam błąd, a ponieważ mam 4 klucze SSH, więc próbowałem śledzić:

ssh-keygen -t rsa
heroku keys:add

następnie cztery opcje pokazują:

1) github_rsa.pub
2) id_boot2docker.pub
3) id_rsa.pub
4) sshkey.pub

Wybieram 3), najnowszą

Następnie naprawiam błąd.

rocLv
źródło
1

Używam tej metody do rozwiązania tego problemu. Może możesz spróbować

„Włącz ssh-agent”

  1. Pobierz git

http://git-scm.com/

  1. Zainstaluj to

  2. Włącz ssh-agent

C: \ Program Files \ Git \ cmd

start-ssh-agent

Komunikat zniknie po włączeniu agenta Mam nadzieję, że to ci pomoże

徐啟倫
źródło
1

Chciałbym dodać inne rozwiązanie, ponieważ nie widziałem go tutaj. Mój problem polegał na tym, że heroku łączyło się z niewłaściwym adresem URL (ponieważ ciągle bawiłem się nazwami adresów URL). Edycja zdalnego adresu URL rozwiązała mój problem:

git remote set-url heroku <heroku-url-here>
ytv
źródło
0

Miałem ten sam problem. Próbowałem zresetować klucze, jak wszyscy mówili, ale nadal nie działało. To dlatego, że zmieniłem nazwę aplikacji.

Zresetowałem więc klucze, a także zmieniłem nazwę aplikacji z konsoli. Sprawdź to pytanie, aby uzyskać więcej informacji: Problem z aplikacją Heroku push

Alin Ciocan
źródło
0

Więc takie proste rozwiązanie, przejdź do c: /Users/user_name/.ssh/ i usuń wszystkie pary kluczy pub / private, w ten sposób heroku wygeneruje klucze dla Ciebie.

00imvj00
źródło
0

Miałem podobny błąd heroku ssh, którego nie mogłem rozwiązać.

Aby obejść ten problem, użyłem nowej funkcji http-git heroku (transport http dla pilota „heroku” zamiast ssh). Szczegóły tutaj: https://devcenter.heroku.com/articles/http-git

(Wersja skrócona: jeśli masz już skonfigurowany projekt w standardowy sposób, uruchom heroku git: remote --http-init, aby zmienić „heroku” remote na http.)

Dobre szybkie obejście, jeśli nie masz czasu na naprawienie / rozwiązanie problemu z ssh.

FullTimeCoderPartTimeSysAdmin
źródło
W moim przypadku problem wydaje się być związany z „:” w zdalnych ścieżkach ssh. (Git 1.9.4 dla Windows.) Z jakiegoś powodu ssh: // git @ host: repo kończy się niepowodzeniem z komunikatem „fatal: Could not read from remote repository”, podczas gdy ssh: // git @ host / repo ”powiedzie się.
FullTimeCoderPartTimeSysAdmin