git push heroku master İzin reddedildi (publickey). ölümcül: Uzak uç beklenmedik bir şekilde kapattı


85

Heroku müşteri desteği olarak SO'yu kullandığı için kontrol altında tutmaya çalışacağım biraz hayal kırıklığı için lütfen özür dilerim (en azını söylemek kalitesiz olduğunu düşünüyorum).

Son beş saattir yayınlamak için bir uygulama almaya çalışıyorum, ancak her zaman anahtarlarda bir şeyler ters gidiyor. Düzinelerce makale okudum ve Heroku'nun aptalca, tamamen opak süreçte nerede çuvalladığını anlamak için bahşişten sonra denedim.

Kullanım durumum o kadar da zor değil: Heroku uygulamalarım için yeni bir anahtar çifti oluşturdum. Bu anahtarı anahtarım olacak şekilde ayarladım:

  > heroku keys
  === travis@xxxx.com Keys
  ssh-rsa AAAAB3NzaC...avOqfA7ZBd travis@xxxx.com

Sorunsuz bir şekilde oturum açabilir ve bir uygulama (aptal ad, çünkü herhangi bir uygulama değil, bir git deposu oluşturuyor gibi görünüyor) "oluşturabilirim". Ancak , uygulamamı zorlamaya çalıştığım her * acayip * seferde şunu elde ediyorum:

  > git push heroku master
  Permission denied (publickey).
  fatal: The remote end hung up unexpectedly

WTF'nin bununla devam ettiğine dair hiçbir fikrim yok; Başımı hiçbir çare olmadan bir klavyeye vurmak zorunda kaldım, ancak Google'ın yüce tanrısının cevap vermesini umuyorum. Ve google cevap vermiyor (peki, bunu geri alayım, bunu cevaplamanın bir düzine yolunu gördüm).

Kolay olması gereken bir sistem için bu bir şakadır. Heroku fikrini beğendim, ama kesinlikle hiçbir şey yapmamak için beşimizi aldıktan sonra , belki de yanlış seçim olduğunu düşünüyorum.


7
Heroku için sağladığımız müşteri desteğinin birinci sınıf kalitesiz olduğunu bilmenizi isterim.
Robert Harvey

1
SO'daki yanıtların kalitesinden hiçbir zaman etkilenmedim. Ne kadar teknik olursa olsun, bir ürün için müşteri desteği sağlamanın kötü bir yolu olduğunu düşünüyorum. Kişisel hesap ayrıntılarını vermem gerekirse ne olur? Tam olarak dünyayla paylaşmak istediğim şey değil (orijinal gönderiyi değiştirmem gerektiğinde anladığım gibi).
Travis Jensen

Bu soruyu gördün mü ? Özellikle genel anahtarınızı git ile kaydettirmekle ilgili kısım?
Ken Beyaz

7
Aynı sorun, çözümü burada buldum: http://www.whatibroke.com/?p=284

1
Remi'nin bağlantılı çözümü benim için çalıştı.
Deborah

Yanıtlar:


149

Web'de çeşitli çözümler var. Mevcut seçenekleri tek bir gönderide yoğunlaştırmaya çalışacağım. Lütfen her adımdan sonra bağlantınızı tekrar deneyin.

  • 1. Adım: Herkese açık anahtarınızı Heroku'ya eklemeyi deneyin

    heroku keys:add ~/.ssh/id_rsa.pub // or just heroku keys:add and it will prompt you to pick one of your keys
    
  • 2. Adım: Yeni bir SSH anahtar seti oluşturun, ardından ilk adımı tekrar deneyin

    https://help.github.com/articles/generating-ssh-keys

  • 3. Adım: Yapılandırma dosyanızı doğrulayın ve / veya değiştirin

    vim ~/.ssh/config
    
    Host heroku.com
    Hostname heroku.com 
    Port 22 
    IdentitiesOnly yes 
    IdentityFile ~/.ssh/id_rsa    <--- Should be your public SSH key
    TCPKeepAlive yes 
    User jsmith@gmail.com
    
  • Adım 4: Heroku uzaktan kumandasını git'ten kaldırın, bağlantıyı yeniden oluşturun, uzaktan kumandayı heroku oluşturma yoluyla eklemek yalnızca yeni depolarda bir seçenek olacaktır. Başlangıçta oluşturmaya çalıştığınız eski deponuzu sildiğinizden emin olun.

     $ git remote rm heroku
     $ heroku create
    
  • 5. Adım: Heroku Toolkit'i yeniden yükleyin


10
Adım 1 benim için hile yaptı! (Ancak SSH anahtarlarımı Heroku'ya göndermeden önce makinem ve Github için yeniden oluşturdum.) Teşekkürler!
ATSiem

1
Temiz kurulumlar ve her şeyle en baştan iki kez çok dikkatli yapmasına rağmen, bunların hiçbiri benim için işe yaramadı. Sonunda, her şeyin işe yaramasını sağlayan şey GitHub anahtarımın ve Heroku anahtarımın aynı olduğundan emin olmaktı. Heroku'nun GitHub'a güvendiğini fark etmediğim sürece, bunun neden bir fark yarattığını bile anlamıyorum, ancak bir şekilde sorunu çözdü. Anahtarlar, GitHub'daki hesap ayarlarında değiştirilebilir. Sanırım bunu cevabına eklemelisin.
temporary_user_name

1
IdentityFile satırının özel ssh anahtarınız olması gerektiğine inanıyorum. Bkz stackoverflow.com/a/8874946/2816571
Paul

2
Şunu mu demek istediniz heroku create? git heroku createbildiğim kadarıyla bir şey değil.
Michael Dorst

1
Vay. Bu deneyim hakkında söylenecek hoş bir şey düşünemiyorum. Git, github'ı kaldırma / yeniden yükleme ve macunu msysgit ile değiştirme dahil olmak üzere çok sayıda tarifi takip ettim. Adım 1-3 sonunda bunu yaptı, ancak değişikliğin github ssh_config içinde olması gerekiyordu. Github anahtarlarımı herhangi bir sorun olmadan birkaç kez düşürüp sıfırladıktan sonra, heroku işlemi gerçekten sinir bozucuydu .
wilk

13

Heroku anahtarınız ve github anahtarlarınız senkronize değil.

  • Hangi anahtarı kullanmak istediğinizi belirleyin (yeni bir tane, yani heroku_rsa oluşturmanızı öneririz).

  • Anahtarı github'a ekleyin.

  • Aynı anahtarı kullanarak heroku'ya ekleyin :heroku keys:add


4
Ben gerçekten, gerçekten, gerçekten ben dört saat önce bu cevabı okumak olsaydı. Yol boyunca çok şey öğrendiğimi düşünmeme rağmen, o yüzden, o kadar da kötü değil.
temporary_user_name

İki farklı Heroku hesabım var (biri iş yerindeki projeler için iş e-postamı kullanıyor, diğeri serbest projeler için kişisel e-postamı kullanıyor). Heroku, ikisi için de aynı anahtarı kullanmama izin vermiyor. Peki her ikisi için de Github anahtarımı nasıl kullanabilirim? (Ve Heroku neden özellikle Github anahtarımı kullanmaya ihtiyaç duyuyor? Heroku'nun Github ile ne ilgisi var? Ya Github kullanmazsam?) Kafam karıştı
callum

Büyü gibi çalıştı! Teşekkürler!
Shashank'ın

2

Aynı sorunla karşılaştım ve neler olup bittiğine dair teorim bu :

Uzun zaman önce Heroku'ya kaydoldum ve onlara github genel anahtarımı verdim. Her zamanki gibi çalışırken, git push heroku mastergider ve adresinde bulunan özel anahtarımı arar ~/.ssh/github_rsa. Daha sonra gönderdiğiniz mesajla birlikte sessizce başarısız olur.

Ancak, daha sonra "kimlik dosyamı" (yani özel anahtar) belirtmek sshiçin -ibayrağı kullanarak başka bir sunucuya girmeyi denedim ve özel anahtarımın parolasını sordu. Özel anahtarın "kilidini açtıktan" sonra git push heroku masterkomut çalışır. Bazı sonuçlar:

  • İken sshbir kimlik dosyasına şifre isteyecektir,git .
  • Kimlik dosyasının kilidini başka bir yöntemle açarsanız ssh, gitkullanımınız için kilidi açık kalacaktır .
  • Genel unix komutu dahil olmak üzere bir kimlik dosyasındaki parola korumasının kalıcı olarak nasıl kaldırılacağına dair herhangi bir belge yok gibi görünüyorkeytool .
  • Yeni bir genel / özel anahtar çifti oluşturmanın yukarıdaki çözümleri, sorunun bu olduğunu bilmeden bu şifre sorunu için bir geçici çözüm gibi görünmektedir.


1

Bende, sorun arka planda çalışan ssh-agent'ım olması ve ilgili özel anahtarın ona eklenmemiş olması gibi görünüyordu.

ps -afe | grep ssh-agent

ssh-add ~/.ssh/id_rsa_heroku_github

Ayrıca github'a (manuel olarak) ve heroku'ya genel anahtarı eklemem gerekiyordu

heroku keys:add ~/.ssh/id_rsa_heroku_github.pub

0

Diğer çözümlerden hiçbiri sizin için işe yaramazsa, linux kabuğuna root ile değil , hesabınızla giriş yaptığınızdan emin olun. hesabında.

Bu şekilde, ssh anahtarlarınızın sahibi olmayan kullanıcıyla çalışıyorsanız git, kimlik doğrulaması için yanlış anahtarları arayacaktır.

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.