Anahtar parmak izi nedeniyle Heroku'ya basılamıyor


131

Rails'de yeniyim ve Heroku'ya çok basit bir uygulama dağıtmaya çalışıyordum. Bu benim dağıttığım ikinci uygulama ve ilkini gayet iyi yapabildim. Ancak bununla ilgili bazı sorunlar yaşıyorum. Ne zaman " git push heroku master " yapsam şu hatayı alıyorum:

! Parmak izine sahip anahtarınız xx: xx: xx: xx: xx: xx: xx: xx: xx: xx: xx: xx: xx: xx: xx: xx, my_heroku_app'e> erişim yetkisine sahip değil.

ölümcül: Uzak uç beklenmedik bir şekilde kapattı

Heroku'ya giriş yaptıktan sonra anahtarlarımı yönetmeye çalıştım. Konsoluma " heroku tuşları " yazarsam şunu alırım:

E-posta adresim için anahtar yok.

Ancak, " heroku tuşları: ekleyin " komutunu çalıştırırsam

Mevcut genel anahtar bulundu: /Users/michele/.ssh/id_rsa.pub ssh genel anahtarı yükleniyor /Users/michele/.ssh/id_rsa.pub! Parmak izi zaten var. Lütfen Heroku hesabı için bir ssh anahtarı kullanın

Lütfen bana yardım et! Bu çok sinir bozucu, sorunun ne olduğu hakkında hiçbir fikrim yok! teşekkür ederim

Yanıtlar:


288

Ben de aynı sorunu yaşadım, bu yazıyı ve aynı türden diğerlerini başarı olmadan takip ettim: - ((

Sonunda çözümü buldum: Yeni rsa kimliğimi makineme eklemem gerekiyordu!

Öncelikle yeni bir rsa anahtarı oluşturdum:

ssh-keygen -t rsa -C "giordano.scalzo[at]gmail.com" -f  ~/.ssh/id_rsa_heroku

sonra makineme ekledi

ssh-add ~/.ssh/id_rsa_heroku

ve sonunda Heroku'ya

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

Daha sonra,

git push heroku master

bir cazibe gibi çalıştı!

Bu yardımcı olur umarım.


47
Bu benim için gerçekten yakındı. Ama bir şey daha vardı. İki heroku hesabım vardı. İlki, makinem için varsayılan SSH anahtarımı eklemişti. İkinci hesabımı düzeltmeye çalışırken ne yaparsam yapayım, varsayılan anahtarımı ilk hesaptan kaldırmam uzun sürmedi. SSH-AGENT varsayılan olarak ilk anahtarı göndererek bu soruna neden olacaktır. Düzeltme, her hesap için (varsayılan değil) heroku için belirli anahtarlar oluşturmaktır
Tom Carchrae

13
@ TomCarchrae ile aynı sorunu yaşadım. Kalıcı olarak bozulmuş görünen hesaptan çıkış yaptım heroku logout, diğer hesaba giriş yaptım ve o hesaptan varsayılan RSA anahtarını sildim. Ondan sonra bu yeni oluşturulan anahtarla itmeyi başardım.
Ross Allen

14
Şahsen benim için eşdeğerini yaptım çünkü ssh-add ~/.ssh/id_rsa_herokubenimki ssh-add ~/.ssh/identity.heroku.foode https://github.com/ddollar/heroku-accounts (Heroku için çoklu hesap yöneticisi) kullanıyorum.
user664833

1
Akılda tutulması gereken bir şey daha - çok fazla SSH anahtarınız varsa, anahtarları sırayla denediği için oturum açamayacaktır (ve daha sonra çok sayıda başarısızlık durumunda oturumunuzdan atılırsınız). bu ssh-agent ile ilgili bir kusur gibi görünüyor (yine de ubuntu'da, ancak diğer uygulamaları da varsayıyorum). bu nedenle, saçınızı çekiyorsanız, ~ / .ssh dizininizi taşımayı ve yeni bir tane başlatmayı deneyin (daha sonra anahtarları birer birer içeri alabilirsiniz).
Tom Carchrae

7
Heroku.com için ~ / .ssh / config içine istediğiniz anahtara işaret eden bir ana bilgisayar girişi ekleyerek hangi anahtarın gönderileceğini etkileyebilirsiniz. Varsayılan anahtarımı kullanmaya ve başarısız olmaya çalıştığı için bu benim için hızlı bir düzeltmeydi. Bu muhtemelen birden çok hesap durumunda yardımcı olmayacaktır.
dnewcome

61

Benim de birden fazla anahtarım ve birden fazla heroku hesabım var, bu yüzden birkaç ayda bir bu sorunla karşılaşıyorum. Giordano Scalzo, Tom Carchrae ve user664833'den bahsedildiği gibi, ana sorun, ssh-addkomutu kullanarak kontrol ettiğiniz ssh-agent . Man sayfası ( man ssh-add) aslında oldukça açık ve öz, bu yüzden bir göz atın.

Ssh-agent'ın bildiği tüm anahtarları şöyle listeleyebilirsiniz:

ssh-add -l

Ssh-agent'ın bildiği tüm anahtarları silebilirsiniz:

ssh-add -D

Veya ile belirli bir anahtarı silin

ssh-add -d ~/.ssh/id_rsa_example_key_file_use_your_own

Merak etmeyin! Aslında anahtarları silmiyorsunuz, yalnızca ssh-agent'ın otomatik olarak kullanmayı denediğini değiştiriyorsunuz, örneğin, heroku'ya basmaya çalıştığınızda. Gerektiği gibi anahtar eklemek ve silmek kolaydır, bu yüzden benim için bu sorundan sıkıldığımda, bunu düzeltmenin en kolay yolu tüm anahtarları silip şu anda yalnızca kullanmak istediğimi geri eklemektir.

ssh-add -D
ssh-add ~/.ssh/id_rsa_example_use_this_one_i_mean_it

1
bu benim için iyi çalıştı, ancak varsayılan ssh anahtarımı geri eklemeye çalışırken (Mtn Lion'da) parola sormaya devam etti, bende olduğunu düşünmüyor musun? Yeniden başlatıldı ve varsayılan ssh'ime geri döndü tamam - ayrıca harika çalışan bu stackoverflow.com/questions/7927750/… buldum
house9

Bu sefer başımı bir süre duvara dayadım ve bu gerekli son adımdı - teşekkürler!
griswoldbar

İlk yöntemi denediyseniz, o zaman bu, (ve Heroku uzaktan kumandanıza itmeye çalıştığınızda İzin Reddedildi (publickey) hatası alıyorsanız) muhtemelen heroku anahtarlarını yeniden çalıştırmayı unutmuşsunuzdur: komut ekle. Her neyse, çok teşekkür ederim! Bu benim için yaptı.
Hairgami_Master

38

Bilgisayarınızda bir SSH anahtarı vardır, ancak bu SSH anahtarı başka bir Heroku hesabıyla ilişkilendirilmiştir.

Aynı bilgisayardaki farklı uygulamalar için her iki hesabı da kullanmanız gerekirse, makinenizde yeni bir SSH anahtarı oluşturmalı ve bunu Heroku'ya yüklemelisiniz:

$ ssh-keygen

Komut size sorduğunda '/Users/User/.ssh/new_id_rsa.pub' olarak kaydettiğinizden emin olun.

$ heroku keys:add /Users/User/.ssh/new_id_rsa.pub 

Ardından, aşağıdakiler için alternatif bir ana bilgisayar eklemeniz heroku.comgerekir ~/.ssh/config:

Host heroku-alt
HostName heroku.com
IdentityFile ~/.ssh/new_id_rsa

Ve sonra .git/configprojenizde ana bilgisayar diğer adını kullanmak için güncelleyin :

[remote "heroku"]
  url = git@heroku-alt:myapp.git
  fetch = +refs/heads/*:refs/remotes/heroku/*

Belirli projelerin dosyaları arasında herokuve heroku-altuzaktan seçim yaparak, .git/confighangi projelerin hangi kimlik bilgilerini kullanacağını yönetebilirsiniz.


1
Evet, benim için de sorun buydu. Aynı istemciden iki Heroku hesabına erişim. Teşekkürler.
Bernard

Ben "Ana Heroku-alt" bana hata veriyor bu yöntemi yapmaya çalışıyor, ama değilim: Host heroku-alt not found: 3(NXDOMAIN). Bunu Mountain Lion'daki terminale koyuyorum. ~/.ssh/configyok, sadece bir grup .pubdosya ve bir tanesi known_hosts. Ve fikirler?
JVG

@Jascination ~ / .ssh / config oluşturmanız ve yanıtta listelenen içerikleri eklemeniz gerekecek. Eğer dosyayı kaydetmektedir yapılır ve içerecektir zaman Host, HostNameve IdentityFilesatırları. Daha sonra iyi çalışmalıdır.
Daniel X Moore

3
Mükemmel! Bu teknik çok zarif!
kinopyo

Adam! Harikasın. Adım adım yürütmek sonunda beni rahatlattı. Teşekkür ederim !!
softvar

14

İşte Heroku belgelerinde veya soruya verilen diğer cevaplarda bulunmayan çok net bir açıklama. En azından tüm bilgiler hiçbir yerde görünmüyor. Ayrıca, sorunu hesaplar aracının anlamadığı bir şekilde anlamanızı sağlar.

Heroku sizi 2 şekilde tanımlar:

İlki .git / config içindedir

[heroku]
    account = acccount_name

Bu, kullanarak temel işlemleri gerçekleştirmenize izin veriyor gibi görünüyor heroku

Heroku'nun sizi tanımasının ikinci yolu, ssh (git push) kullanan herhangi bir işlemdir. Heroku, burada belirtildiği gibi sizi ssh anahtarınızla tanımlayacaktır: https://devcenter.heroku.com/articles/keys

Bu anahtar çifti, güçlü kriptografi için kullanılır ve kod değişikliklerini iletirken sizi benzersiz bir şekilde geliştirici olarak tanımlar.

Bu nedenle, üzerinde çalıştığınız her bir heroku hesabı, ssh kullanırken heroku'ya farklı bir anahtar göndermelidir. Ssh anahtarlarınızı oluşturmak için herhangi bir öğreticiyi izleyin.

Anahtar, SSH'nin her Heroku hesabı için farklı anahtarlar kullanmasıdır. Bunu nasıl yapılandırırsınız? 2 şey yapmanız gerekecek:

1) .ssh / config dosyanızın yakalayıp yeniden yapılandıracağı 'sahte' bir etki alanı oluşturmanız gerekir. Bu, ssh'a istediğiniz 'gerçek' etki alanını ve hangi özel ssh anahtarını kullanacağınızı söyleyecektir.

Host heroku.my_unique_key
  HostName heroku.com
  IdentityFile ~/.ssh/identity.heroku.my_unique_key
  IdentitiesOnly yes

2) git push kullanırken bunu kullanmak için .git / config dosyanızı değiştirin. Heroku.com yerine, .ssh / config dosyanızda belirlediğiniz sahte alan adını kullanın

[remote "heroku"]
    url = git@heroku.com.git


[remote "heroku"]
    url = git@heroku.my_unique_key:myapp.git

İşte bu :) Aynı zamanda biraz karmaşık ve biraz basit. Kafamı duvara vurmam ve bu bilgiyi keşfetmem için deneme yanılma 3 yılımı aldı. Açıkça bir yerde belgelenmeli, ama en azından bir başlangıç.


Benzersiz ana bilgisayar adı meselesi benim sorunumdu. Pixelearth'e çok teşekkür ederim.
FluffyJack

Muchos Gracias Por Favor
EE33

9

youn'un yeni anahtarlar oluşturması ve bunları eklemesi gerekecek

çalıştırdıktan sonra yeni bir dosya adı belirtin

ssh-keygen

sonra (benim durumumda)

heroku keys:add /home/alex/.ssh/alex_heroku_rsa.pub

3

Geçen hafta aynı sorunu yaşıyorum. Bu bağlantı bana yardımcı oldu. Umarım size biraz yardımcı olur. http://devcenter.heroku.com/articles/keys


Bu bağlantıyı gördüm, anahtarlarımı kaldırmayı ve tekrar eklemeyi denedim, ancak yine de çalışamıyorum.
mre

Bu sorunu çözdünüz mü?
Benjamin

1
Bu bağlantıdaki talimatları özetleyebilir misiniz? Buradaki sadece cevaplardan kaçınmaya çalışıyoruz.
balmumu kartal

Bu yalnızca anahtarların nasıl üretileceğini açıklar, birden fazla anahtarın nasıl yönetileceğini değil.
Macario

3

Benim durumumda, heroku keyszaten listelenen doğru anahtar vardı. Yani tek yapmam gereken koşmaktı ssh-add /path/to/that/keyve sonra her şey yolunda gitmeye başladı.


2

Ayrıca iki Heorku hesabım var ve bir çözüm olarak ana hesabımı (anahtarı Heroku tarafından otomatik olarak kullanılan) projeme ortak çalışan olarak "davet ettim".


1

Windows kullanıcıları için çözümü eklemek istemiyorum.

  1. İlk indirme "Putty Key generator"

  2. Onunla bir anahtar oluşturun OBS, rasgelelik oluşturmak için farenizi boş alana doğru hareket ettirmeniz gerekir.

  3. Anahtarlarınızı kaydedin, anahtarınızı [ad] .pub olarak yeniden adlandırmayı unutmayın.

  4. heroku keys:addTerminalde çalıştırın !


0

Benim durumumda sorun, kullandığım ssh sürümüydü. GIT_SSH ortam değişkenini başka bir değişkene ("GIT_SSH = / usr / bin / ssh") ayarladım ve her şey benim için yolunda gitti.

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.