キー指紋のためHerokuにプッシュできません


131

私はRailsを初めて使い、非常にシンプルなアプリをHerokuにデプロイしようとしていました。これは私がデプロイした2番目のアプリで、最初のアプリは問題なく実行できました。しかし、私はこれでいくつかの問題を抱えています。「git push heroku master」を実行すると、常に次のエラーが発生します。

!指紋がxx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xxのキーは、my_heroku_appへのアクセスが許可されていません。

致命的:リモートエンドが突然ハングアップした

herokuにログインした後、キーを管理しようとしました。コンソールに「heroku keys」と入力すると、次のようになります。

myemailaddressのキーがありません。

ただし、コマンド「heroku keys:add」を実行すると、

既存の公開鍵が見つかりました:/Users/michele/.ssh/id_rsa.pub ssh公開鍵のアップロード/Users/michele/.ssh/id_rsa.pub!指紋はすでに存在しています。Herokuアカウントごとに1つのSSHキーを使用してください

私を助けてください!これは非常にイライラします、何が悪いのかわかりません!ありがとうございました

回答:


288

私は同じ問題を抱えていました、私はこの投稿と同じ種類の他のものをフォローしましたが成功しませんでした:-((

最後に、解決策を見つけました。自分のマシンに新しいrsa IDを追加する必要がありました。

それで、最初に私は新しいRSAキーを作成しました:

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

それを私のマシンに追加しました

ssh-add ~/.ssh/id_rsa_heroku

そして最後にHerokuへ

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

その後、

git push heroku master

魅力のように働いた!

お役に立てれば。


47
これは本当に私に近かった。しかし、もう1つありました。2つのherokuアカウントを持っています。最初のものは私のマシンにデフォルトのSSHキーを追加していました。2番目のアカウントを修正しようとしても、最初のアカウントからデフォルトのキーを削除するまではかかりません。SSH-AGENTはデフォルトで最初のキーを送信するため、この問題が発生します。修正は、各アカウントのheroku(デフォルトではない)に特定のキーを作成することです
Tom Carchrae

13
@TomCarchraeと同じ問題がありました。で恒久的に無効heroku logoutにされたと思われるアカウントからログアウトし、他のアカウントにログインして、そのアカウントからデフォルトのRSAキーを削除しました。その後、私はこの新しく生成されたキーでプッシュすることができました。
ロス・アレン

14
私にとっては個人的に、私は相当やったssh-add ~/.ssh/id_rsa_heroku鉱山があったがssh-add ~/.ssh/identity.heroku.foo、私も使っているので、https://github.com/ddollar/heroku-accountsを(複数がHerokuのための管理者アカウント)。
user664833 2012

1
もう1つ覚えておくべきこと-SSHキーが多すぎる場合は、キーを順番に試行するため、ログインできなくなります(その後、ログインに失敗し、失敗が多すぎます)。これはssh-agentの欠陥のようです(とにかくubuntuでは、他の実装も想定しています)。したがって、髪を引っ張っている場合は、〜/ .sshディレクトリを移動して、新しいディレクトリを作成してみてください(キーを1つずつ引っ張ることができます)。
Tom Carchrae、

7
必要なキーを指すheroku.comの〜/ .ssh / configにホストエントリを追加することで、送信するキーに影響を与えることができます。デフォルトのキーを使用しようとして失敗したため、これは私にとっては迅速な修正でした。これは、複数のアカウントの場合にはおそらく役に立たないでしょう。
dnewcome 2012年

61

私も複数のキーと複数のherokuアカウントを持っているため、この問題は数か月ごとに発生します。Giordano Scalzo、Tom Carchrae、およびuser664833で述べたように、主な問題はssh-agentで、ssh-addコマンドを使用して制御します。マニュアルページ(man ssh-add)は実際には非常に明確で簡潔なので、確認してください。

ssh-agentが認識しているすべてのキーを一覧表示できます。

ssh-add -l

ssh-agentが認識しているすべてのキーを削除できます。

ssh-add -D

または特定のキーを削除するには

ssh-add -d ~/.ssh/id_rsa_example_key_file_use_your_own

心配しないで!実際にキーを削除するのではなく、たとえば、herokuにプッシュしようとしたときに、ssh-agentが自動的に使用しようとするキーを変更するだけです。必要に応じてキーを追加したり削除したりするのは簡単なので、この問題に不満を感じた場合、すべてのキーを削除して、現時点で使用したいキーだけを追加するのが最も簡単な方法です。

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

1
これは私にとってはうまくいきましたが、デフォルトのsshキーを追加しようとすると(Mtn Lionで)パスフレーズのプロンプトが表示され続けました。再起動してデフォルトのsshに戻したところ、問題はありませんでした。また、このstackoverflow.com/questions/7927750/…
正常に

この壁を越えている間、頭を壁にぶつけて、これが最後のステップでした-ありがとう!
griswoldbar 2013

最初の方法を試してからこの方法を試した場合(そしてHerokuリモートにプッシュしようとすると、Permission Denied(publickey)エラーが表示されます)、おそらくheroku keys:addコマンドを再実行するのを忘れていました。とにかくありがとうございました!これでうまくいきました。
Hairgami_Master

38

コンピューターにはSSHキーがありますが、そのSSHキーは別のHerokuアカウントに関連付けられています。

同じコンピューター上の異なるアプリケーションで両方のアカウントを使用する必要がある場合は、マシンで新しいSSHキーを作成し、それをHerokuにアップロードする必要があります。

$ ssh-keygen

プロンプトが表示されたら、必ず「/Users/User/.ssh/new_id_rsa.pub」として保存してください。

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

次に、に代替ホストを追加する必要がありheroku.comます~/.ssh/config

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

次に.git/config、プロジェクトでを更新して、ホストエイリアスを使用します。

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

特定のプロジェクトのファイルをリモートで選択することによりheroku、どのプロジェクトがどの認証情報を使用するかを管理できます。heroku-alt.git/config


1
はい、それも私にとって問題でした。同じクライアントから2つのHerokuアカウントにアクセスする。ありがとう。
バーナード

この方法を実行しようとしていますが、「Host heroku-alt」でエラーが発生しますHost heroku-alt not found: 3(NXDOMAIN)。これをマウンテンライオンのターミナルに配置します。~/.ssh/configどちらも存在せず、一連の.pubファイルと1つが呼び出されknown_hostsます。そしてアイデア?
JVG 2013

@Jascination〜/ .ssh / configを作成し、回答に記載されている内容を入力する必要があります。あなたは、ファイルの保存に行われており、それが含まれます場合はHostHostName、およびIdentityFileライン。これで問題なく動作するはずです。
Daniel X Moore

3
優れた!このテクニックはとてもエレガントです!
kinopyo 2013

おとこ!あなたは素晴らしいです。ステップバイステップで実行すると、ようやく安心できます。ありがとうございました !!
softvar 2014

14

Herokuのドキュメントや質問に対するその他の回答に欠けている非常に明確な説明を次に示します。少なくともすべての情報が1か所に表示されているようには見えません。また、アカウントツールでは理解できない方法で問題を理解することもできます。

Herokuは2つの方法であなたを識別します。

最初は.git / configにあります

[heroku]
    account = acccount_name

これを使用して基本的な操作を実行できるようです heroku

herokuがあなたを識別する2番目の方法は、ssh(git push)を使用するすべての操作によるものです。Herokuは、https://devcenter.heroku.com/articles/keysで説明されているように、sshキーでユーザーを識別します

このキーペアは強力な暗号化に使用され、コードの変更をプッシュするときに開発者として一意に識別されます。

そのため、sshを使用する場合、作業する各herokuアカウントは異なるキーをherokuに送信する必要があります。チュートリアルに従って、sshキーを作成します。

キーは、SSHにHerokuアカウントごとに異なるキーを使用させることです。これをどのように構成しますか?次の2つのことを行う必要があります。

1).ssh / configがインターセプトして再構成する「ダミー」ドメインを作成する必要があります。これにより、sshに必要な「実際の」ドメインと、使用する特別なsshキーが通知されます。

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

2)git pushを使用するときに.git / configを使用するように変更します。heroku.comの代わりに、.ssh / configで設定したダミードメインを使用します

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


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

それだけです:)少し複雑で、同時に少し単純です。この情報を見つけるのに3年間、壁に頭をぶつけて試行錯誤を繰り返しました。どこかで明確に文書化されるべきですが、少なくともそれは始まりです。


ユニークなホスト名が私の問題でした。pixelearthありがとうございます。
FluffyJack 2013年

Muchos Gracias Por Favor
EE33

9

あなたは新しいキーを作成してそれらを追加する必要があります

実行後に新しいファイル名を指定する

ssh-keygen

その後(私の場合)

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

3

先週同じ問題があります。このリンクは私を助けました。少しお役に立てば幸いです。http://devcenter.heroku.com/articles/keys


そのリンクを見て、キーを削除して追加しようとしましたが、それでも機能しません。
mre

この問題を解決しましたか?
ベンジャミン

1
このリンクで説明を要約できますか?ここではリンクのみの回答は避けようとしています。
ワックスイーグル

これは、複数のキーを管理する方法ではなく、キーを生成する方法を説明するだけです。
Macario 2012

3

私の場合、heroku keysすでに正しいキーがリストされていました。だから、私がしなければならなかったすべては実行されssh-add /path/to/that/key、それからすべてがうまくいき始めました。


2

また、2つのHeorkuアカウントがあり、回避策として、私のメインアカウント(Herokuによってキーが自動的に使用されるアカウント)をプロジェクトの共同作業者として "招待"しました。


1

Windowsユーザー向けのソリューションを追加したくありません。

  1. 最初に「パティキージェネレータ」をダウンロードしてください

  2. OBSでキーを作成します。ランダム性を生成するために、マウスを空白領域に移動する必要があります。

  3. キーを保存します。キーの名前を[name] .pubに変更してください。

  4. heroku keys:addターミナルで走れ!


0

私の場合、問題は私が使用していたsshバージョンでした。GIT_SSH環境変数を別の環境変数( "GIT_SSH = / usr / bin / ssh")に設定するだけで、すべてが問題なく動作しました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.