85

Heroku は SO をカスタマー サポートとして使用しているため (控えめに言っても手抜きだと思います)、少しフラストレーションを感じないようにしておきます。

この 5 時間、私はアプリケーションを公開しようとしてきましたが、必ずキーに問題が発生します。私は何十もの記事を読み、Heroku が愚かで完全に不透明なプロセスのどこで失敗しているのかを突き止めるために、ヒントを次々と試しました。

私の使用例はそれほど難しくありません。heroku アプリ用に新しいキーペアを作成しました。そのキーを自分のキーに設定しました:

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

問題なくログインしてアプリケーションを「作成」できます(どんな種類のアプリでもなく、gitリポジトリを作成しているように見えるので、ばかげた名前です)。しかし、アプリをプッシュしようとするたびに、次のようになります

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

WTFがそれで起こっていることについての洞察はありません。Google の全能の神がそれに答えてくれることを祈るしかないので、頼りなくキーボードに頭をぶつけて立ち往生しています。そしてグーグルはそれに答えていません(まあ、それを取り戻させてください、私はこれに答えるために約12の方法を見てきました).

簡単だと思われるシステムにとって、これは冗談です。私は Heroku のアイデアが気に入っていますが、まったく何もしないために 5 人を採用した後、おそらくそれは間違った選択であると考えています。

4

6 に答える 6

149

Webにはさまざまなソリューションがあります。利用可能なオプションを1つの投稿にまとめようとします。すべてのステップの後で、接続を再試行してください。

  • ステップ1:公開鍵をHerokuに追加してみます

    heroku keys:add ~/.ssh/id_rsa.pub // or just heroku keys:add and it will prompt you to pick one of your keys
    
  • 手順2:SSHキーの新しいセットを生成してから、最初の手順を再試行します

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

  • ステップ3:構成ファイルを確認および/または変更する

    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
    
  • ステップ4:Gitからherokuリモートを削除し、接続を再作成します。herokucreateを介してリモートを追加することは、新しいリポジトリのオプションになります。最初に作成しようとした古いリポジトリを必ず削除してください

     $ git remote rm heroku
     $ heroku create
    
  • 手順5:HerokuToolkitを再インストールする

于 2013-03-04T22:38:59.217 に答える
2

私は同じ問題に遭遇しました.これは何が起こっているのかについての私の理論です:

私はずっと前に Heroku にサインアップし、github の公開鍵を渡しました。通常の を試みると、git push heroku masterにある私の秘密鍵を探します~/.ssh/github_rsa。その後、投稿したメッセージでサイレントに失敗します。

しかし、後でフラグをssh使用して「ID ファイル」(つまり、秘密鍵) を指定して別のサーバーに接続しようと-iしたところ、秘密鍵のパスワードの入力を求められました。秘密鍵を「ロック解除」すると、git push heroku masterコマンドが機能します。いくつかの結論:

  • sshID ファイルへのパスワードを求めるプロンプトが表示されますが、表示されgitません。
  • などの別の方法で ID ファイルのロックを解除すると、ロックがssh解除されたままgit使用できます。
  • 一般的な unix コマンドを含む、ID ファイルのパスワード保護を永久に削除する方法に関するドキュメントないようですkeytool
  • 新しい公開鍵と秘密鍵のペアを作成する上記の解決策は、それが問題であることを知らなくても、このパスワードの問題の回避策のようです。
于 2012-11-27T01:00:06.330 に答える
2

heroku コードのデプロイ時に許可が拒否されました (公開鍵)。致命的: リモート エンドが予期せず電話を切りました

これはあなたの解決策かもしれないと思います、少なくとも私にとってはそうでした

于 2012-11-27T19:20:12.550 に答える
1

私には、バックグラウンドで ssh-agent を実行していて、関連する秘密鍵が追加されていないことが問題のようでした。

ps -afe | grep ssh-agent

ssh-add ~/.ssh/id_rsa_heroku_github

また、公開鍵を github (手動) と heroku に追加する必要がありました

heroku keys:add ~/.ssh/id_rsa_heroku_github.pub
于 2014-11-23T15:21:30.957 に答える
0

他の解決策がどれもうまくいかない場合は、rootアカウントではなく自分のアカウントで Linux シェルにログインしていることを確認してください。

そうすれば、ssh キーの所有者ではないユーザーで実行している場合、git は認証のために間違ったキーを探します。

于 2014-05-15T00:36:25.897 に答える