Heroku 'İzin reddedildi (publickey) ölümcül: Uzak depodaki sıkıntılardan okunamadı


139

Son zamanlarda görünüşte düzeltmesi kolay sorunum için bir çözüm arayan uzun saatler boyunca araştırdım. Aradığım hiçbir şey ortaya çıkmadı, aramam o kadar farklı çözüm buldu ki, hiçbiri işe yaramadı.

Her neyse, Mac bilgisayarımdaki Heroku veri havuzumdan itemiyorum, çekemiyorum veya getiremiyorum. Her girişim bana (alay ediyormuş gibi) şu hatayı veriyor:

'İzin reddedildi (publickey). ölümcül: Uzak depodan okunamadı. '

Ben birçok farklı şekilde düzeltmek için denedim (ve yeniden denedim). Söylediğim gibi, son iki günün iyi bir kısmını cevap aramak için harcadım. İşte denediğim bazı şeyler:

  • heroku tuşları: açık ve ardından heroku tuşları: ekle
  • 'Ssh-keygen -t rsa' ile bir ssh anahtarını kendi başıma yeniden oluşturma
  • .Ssh dizinimi temizledikten sonra heroku anahtarları temizleniyor: temizle, ardından bir ssh anahtarı oluşturma
  • Heroku'daki uygulamamı silme ve birini yeniden oluşturma (çok şükür orada değildi)

GitHub veri havuzumdan getirebilirim, bu yüzden ağ bağlantısı olmadığını biliyorum (pinging heroku da çalışır).

Geçici bir çözüm olarak (kalıcı bir dönüşüme dönüşmediğini umuyorum), Ubuntu Amazon AWS ec2 örneğime giriş yaptım. Heroku'ya doğru ve Heroku'dan itmek ve itmek mükemmel çalışıyor. Bu nedenle, sorun hala Mac'imdeki ssh tuşunda yatıyor gibi hissediyorum. Her iki anahtar da Heroku hesabım altında görünüyor. Anahtarın sonundaki e-posta adresi önemli mi?

EDIT: GitHub para cezası ve itebilir (Ancak ssh kullanmıyorum), öyleyse neden Heroku değil?

Bu noktada bir şey denemeye hazırım. Teşekkürler!


Heroku anahtarınıza bir parola mı ayarladınız? Ve sanırım ( stackoverflow.com/a/16753800/6309 ) yardımcı olmuyor mu? Veya çift kontrol stackoverflow.com/a/16753800/6309
VonC

Ne yazık ki hala çalışmayı reddediyor.
thebradbain

bazen bu heroku bakımdayken olur: status.heroku.com
Mavis

Yanıtlar:


284

Bunun zaten cevaplandığını biliyorum. Ama ileride başkaları için yararlı olabileceğinden çözümümü eklemek istiyorum.

Yaygın bir anahtar hatadır: Permission denied (publickey). Bunu keys:addHeroku'ya yeni anahtarınızı bildirmek için kullanarak düzeltebilirsiniz .

Kısaca şu adımları izleyin: https://devcenter.heroku.com/articles/keys

Öncelikle bir anahtarınız yoksa bir anahtar oluşturmanız gerekir:

ssh-keygen -t rsa

İkincisi, anahtarı Heroku'ya eklemelisiniz:

heroku keys:add

2
Teşekkürler kris, Gelecekten bazıları :) Bu benim için çalışıyor
Ahmad Ajmi

8
heroku tuşları: eklemek öğretici kaçırdım sanırım ... teşekkür ederim! :)
Ole Henrik Skogstrøm

Anahtar sadece bir alredonunuz yoksa üretilmeli, benim durumumda alredy anahtarım vardı ve anahtarı heroku'ya eklemem gerekiyordu
joseramonc

4
Birincisi gereksiz. heroku keys:addanahtarınız yoksa bir tane oluşturmanıza yardımcı olur.
Mygod

Run ssh-keygen -t rsaeğer RSAaksi oluşturulmaz heroku keys:addyeterli durumdadır olmalıdır
Volatil3

122

Sadece kendi sorumun cevabını bulduğumu paylaşacağımı sanıyordum.

Sorunumu yazmak benim için daha da netleşti ve ayrıca sorunumun nerede yattığını düşündüğümü araştırdım: ssh anahtarı

Haklı olduğum anlaşılıyor. Sorun anahtarın kendisiyle ilgili değildi, daha ziyade yerel Mac'in bilinen ssh anahtarları listesine eklememiştim. Dolayısıyla, Heroku hesabımda doğru anahtar yüklenmiş olsa bile, Mac'im kimlik doğrulaması yapamadı çünkü bilgisayarımda bu anahtarı bulamadı. Çözüm?

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

İyi bir referans olduğu için https://help.github.com/articles/error-permission-denied-publickey'ye kredi vermek istiyorum .


5
Durumunuz için ilk yorumumdan daha doğru olan geri bildiriminiz için teşekkür ederiz. +1
VonC

4
Windows'da bir kişinin başlaması Git Bash(bir klasörü sağ tıklatması) ve çalıştırılması ssh-agentmümkün olan bir klasörü başlatması `ssh-agent`(geri kenelere dikkat edin) ve ardından anahtarı yukarıda açıklandığı gibi ekleyin. Ben başlatmak bu her zaman yapmak zorunda Git Bash/ ssh-agentda belirtildi ne unutur.
TWiStErRob

Bunu yaptım ve hala işe yaramadı. .Ssh klasörünün bulunduğu dizine HOME adlı bir ortam değişkeni eklemek zorunda kaldım
Justin

Teşekkürler - bunu asla çözemezdim!
Mark Hansen

Bu benim sorunum düzeltildi, daha yüksek oylanan cevap değil, teşekkürler :)
Ryan Brodie

31

(Windows 7'de) aynı hatayı aldım ve nedeni farklıydı. Farklı bir şekilde çözdüm, bu yüzden başkaları için nedeni ve çözümü ekleyeceğimi düşündüm.

Hata heroku'ya işaret etmiş gibi görünse de hata söylüyordu "Heroku can't get to the git repository". Tüm sunucularda aynı anahtarlara sahip olduğuma yemin ettim çünkü onu oluşturdum ve aynı anda birbiri ardına yükledim.

Neredeyse bir gün geçirdikten sonra fark ettim çünkü git bana gerçek anahtarı değil, sadece parmak izini gösteriyordu. Bunun HD veya heroku'mdaki anahtarla eşleştiğini doğrulayamadım. Bilinen hosts dosyasına baktım ve ne olduğunu tahmin et ... her sunucu için anahtarları gösterir ve açıkça git ve heroku ortak anahtarlarının eşleşmediğini görebildim.

1) Anahtar klasörümdeki tüm dosyaları, web sitelerini kullanarak github'dan anahtarı ve git bash ve komutunu kullanarak heroku'dan anahtarı sildim heroku keys:clear

2) Ardından github talimatları burada yeni bir anahtar çifti oluşturmak ve Git kamu anahtarı yüklemeniz

3) git bash- heroku keys:add Heroku'ya aynı anahtarı yüklemek için kullanın.

Şimdi git push heroku masterçalışıyor.

ne kabus, umarım bu birisine yardım eder.

Bryan


1
Gönderinizi görene kadar beynimi buna soktum. Git ve heroku anahtarlarını aynı yapar yapmaz, her şey yolundaydı. Ama neden aynı olmaları gerektiğini anlamıyorum.
Kishore Masand

Bu sorunla yaşları geçen cevap için teşekkür ederiz
Ivan Bacher

çok yararlı git belgeler bağlantısı, tüm mükemmel çalışıyor
HotJard

Anlamaya çalıştıktan birkaç gün sonra bu benim için çalıştı. Heroku'nun bu pislikle ilgili bir kullanılabilirlik sorunu ile işinde kalabileceğine şaşırdım. Bunu yapmanın daha kolay bir yolu olmalı.
Luke

Teşekkür ederim. Benim için çalıştı; sadece bir şey: github bağlantısında bir yerlerde "ssh-add" yapmak diyor. Orada bir sorunum vardı, ancak burada bir çözüm buldum: stackoverflow.com/questions/17846529/…
Alin Ciocan

17

Yaşadığım sorun GitHub hesabım için sadece https kullanıyordum. GitHub hesabımın ssh erişimi için ayarlandığından ve GitHub ve heroku'nun aynı ortak anahtarları kullandığından emin olmam gerekiyordu. Attığım adımlar şunlardır:

  1. ~ / .Ssh dizinine gidin ve varsa id_rsa ve id_rsa.pub dosyalarını silin. Yeni anahtarlarla başladım, ancak gerekli olmayabilir.

    $ cd ~/.ssh
    $ rm id_rsa id_rsa.pub
    
  2. Ssh anahtarları oluşturmak için gitHub'daki adımları izleyin
  3. Heroku'ya giriş yapın, yeni bir site oluşturun ve genel anahtarlarınızı ekleyin:

    $ heroku login
    ...
    $ heroku create
    $ heroku keys:add
    $ git push heroku master
    

6

linux ubuntu üzerinde aynı dava vardı ve sadece sabit, OS /root/.ssh/ ve ev / kullanıcı / .ssh / dir arasında karıştı gibi görünüyor, ne yaptım:

  1. root ve home / user .shh dizinindeki tüm anahtarlar kaldırıldı.
  2. yeni bir anahtar oluşturduğundan , oluşturma yoluna (/home/you/.ssh/id_rsa) veya (/root/.ssh/id_rsa) dikkat ettiğinizden emin olun.
  3. heroku anahtarlarını kontrol et heroku keys
  4. oradaki anahtarlar açıksa heroku keys:clear
  5. heroku keys:addşimdi burada heroku bir anahtar bulamadıysa ve doğru bir tane oluşturmamızı istediyse ve bu da benimkiyle aynı meseleye sahip olduğunuz anlamına geliyor, ekleme komutunu heroku keys:add /root/.ssh/id_rsa.pubşu şekilde yapın, ekleyeceğiniz yol sahip olduğunuz yol olacak 2. adımda.
  6. git push heroku masterşimdi dene

3

Windows 8'de yolum

  1. Sistem PATH değişkenine ssh-keygen içeren bir dizin ekleyin, genellikle C: \ Program Files (x86) \ Git \ bin

  2. CMD'yi açın, C: \ Kullanıcılar \ Me \

  3. SSH anahtarı oluştur ssh-keygen -t rsa

    Anahtarın kaydedileceği dosyayı girin (//.ssh/id_rsa): .ssh / id_rsa (varsayılan yanlış yolu .ssh / somegoodname_rsa olarak değiştirin)

  4. Anahtarı Heroku'ya ekle heroku keys:add

    Listeden oluşturulmuş bir anahtar seçin

  5. Uygulama dizininize gidin, güzel bir kod yazın

  6. Git deposunu başlat git init git add . git commit -m 'chore(release): v0.0.1

  7. Heroku uygulaması oluştur heroku create

  8. Uygulamanızı dağıtın git push heroku master

  9. Uygulamanızı açın heroku open


2

Benzer bir sorun vardı ve çok şey denedim. Nihayetinde benim için işe yarayan, Windows'ta Gnu'nun yüklü olmasıydı ( https://github.com/bmatzelle/gow/releases ) ve Git ile değil, o dizinin içindeki ssh aracını kullandığından emin olun. Bir kez kurulduktan sonra test edin (ortamınızın PATH'in Git \ bin'ten önce olup olmadığını kontrol edin)

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

Burada açıklandığı gibi macun ve pageant kullandım: http://rubyonrailswin.wordpress.com/2010/03/08/getting-git-to-work-on-heroku-on-windows-using-putty-plink-pageant/

Anahtarlar heroku'ya gönderildikten sonra (heroku anahtarları: add c: \ Users \ Person.ssh \ id_rsa.pub),

ssh -v <username>@heroku.com 

ve yığınızın Putty - yani çalışan bir yığın kullandığından emin olun:

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

Daha önce çalışan ve başarısız olan biri:

C:\Git\htest2>ssh -v <username>@gmail.com@heroku.com
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).

Sadece bunun Windows 8 (8.1) kullandığını söylemek için. Ayrıca macun parçaları olmadan kullanmak ve ssh-keygen kullanmak mümkün çünkü GoW ssh aracı anahtarı gibi görünüyor.
user3484361

2

aşağıdakileri yazarak yeni bir ssh anahtarı oluşturmanız gerekir - ssh-keygen -t rsa

Sonra eklemeniz gerekir: - heroku tuşları: ekle

Sonra yazarsanız - heroku açık

Problem çözüldü.

Yine de benim için çalıştı, bir deneyin ...


2

Aynı hatayı aldım ve 4 ssh tuşum olduğu için takip etmeyi denedim:

ssh-keygen -t rsa
heroku keys:add

ardından dört seçenek gösterilir:

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

3), en yenisini seçiyorum

Sonra hatayı düzeltirim.


1

Bu sorunu çözmek için bu yöntemi kullanıyorum Belki deneyebilirsiniz

"Ssh-agent'ı etkinleştir"

  1. Git indir

http://git-scm.com/

  1. Yükle

  2. Ssh-agent'ı etkinleştir

C: \ Program Dosyaları \ Git \ cmd

Başlangıç ​​SSH-madde

Ben ajan etkinleştirdikten sonra mesaj hayal kırıklığına Umarım bu size yardımcı olacaktır


1

Burada görmediğim için başka bir çözüm daha eklemek istiyorum. Benim sorunum, heroku'nun yanlış url'ye bağlanmasıydı (çünkü url isimleriyle oynamaya devam ettim). Uzak URL'yi düzenlemek sorunumu çözdü:

git remote set-url heroku <heroku-url-here>

0

Aynı sorunu yaşadım. Ve herkesin söylediği gibi anahtarlarımı sıfırlamaya çalıştım, ama yine de işe yaramadı. Çünkü uygulamayı yeniden adlandırdım.

Yaptığım şey anahtarlarımı sıfırlamak ve aynı zamanda uygulamayı konsoldan yeniden adlandırmaktı. Daha fazla bilgi için bu soruyu kontrol edin: Heroku push uygulaması sorunu


0

SO So Çok basit bir çözüm, c: /Users/user_name/.ssh/ adresine gidin ve tüm pub / özel anahtar çiftlerini silin, bu şekilde heroku sizin için anahtarlar üretecektir.


0

Çözemediğim benzer bir heroku ssh hatası aldım.

Çözüm olarak, yeni heroku http-git özelliğini kullandım (http yerine "heroku" uzaktan kumandası için http aktarımı). Ayrıntılar burada: https://devcenter.heroku.com/articles/http-git

(Kısa sürüm: zaten standart şekilde ayarlanmış bir projeniz varsa, "heroku" uzaklığını http olarak değiştirmek için heroku git: remote --http-init komutunu çalıştırın.)

Bir ssh sorununu düzeltmek / gidermek için zamanınız yoksa iyi bir hızlı çözüm.


Benim durumumda, sorun ssh uzak yollarında ":" ile ilgili gibi görünüyor. (Windows için Git 1.9.4.) Herhangi bir nedenle ssh: // git @ host: repo, "fatal: Uzak depodan okunamadı" ile başarısız olur, ssh: // git @ host / repo "başarılı olur.
FullTimeCoderPartTimeSysAdmin
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.