web-dev-qa-db-ja.com

キーフィンガープリントのためHerokuにプッシュできません

私は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キーを使用してください

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

131
mre

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

最後に、解決策を見つけました。マシンに新しい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 keys:add ~/.ssh/id_rsa_heroku.pub

その後、

git Push heroku master

魔法のように働いた!

お役に立てれば。

288
Giordano Scalzo

私も複数のキーと複数の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

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

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

コンピューターには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-altファイルのリモートでheroku.git/configを選択することにより、どのプロジェクトがどの資格情報を使用するかを管理できます。

38
Daniel X Moore

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

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

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

[heroku]
    account = acccount_name

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

Herokuがユーザーを識別する2番目の方法は、ssh(git Push)を使用する操作です。 Herokuは、次のようにsshキーでユーザーを識別します。 https://devcenter.heroku.com/articles/keys

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

そのため、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 = [email protected]


[remote "heroku"]
    url = [email protected]_unique_key:myapp.git

それだけです:)少し複雑で、同時に少し簡単です。この情報を発見するには、3年かけて頭を壁にぶつけて試行錯誤しました。どこかに明確に文書化する必要がありますが、少なくとも出発点です。

14
pixelearth

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

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

ssh-keygen

その後(私の場合)

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

私の場合、 heroku keysには既に正しいキーがリストされていました。だから、私がしなければならなかったことはssh-add /path/to/that/keyそして、すべてが正常に動作し始めました。

3
M. Scott Ford

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

3
Benjamin

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

2
Fabio CR

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

  1. 最初のダウンロード "PuTTY Key generator"

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

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

  4. 実行heroku keys:addターミナルで!

1
Rails beginner

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

0
gfhuertac