git push heroku master権限が拒否されました(公開鍵)。致命的:リモートエンドが予期せずハングアップしました


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がそれで起こっていることについての洞察を持っていません。私はただ頼りになることなくキーボードに頭をぶつけて立ち往生していますが、グーグルの全能の神がそれに答えることができることを願っています。そしてグーグルはそれに答えていません(まあ、それを取り戻させてください、私はこれに答える約12の方法を見てきました)。

簡単なはずのシステムにとって、これは冗談です。私はHerokuのアイデアが好きですが、何もしないために5つ取った後、それは間違った選択かもしれないと思います。


7
Herokuに提供するカスタマーサポートは一流の粗雑なものであることをご存知でしょう。
ロバートハーベイ

1
SOでの回答の質に感銘を受けたことはありません。どんなに技術的であっても、製品のカスタマーサポートを提供するのは不十分な方法だと思います。個人アカウントの詳細を提供する必要がある場合はどうなりますか?私が世界と共有したいものとは異なります(元の投稿を変更する必要があるときに気付いたように)。
Travis Jensen

あなたはこの質問をましたか?特に公開鍵をgitに登録する部分は?
ケンホワイト

7
同じ問題、ここで解決策を入手しました:http

1
レミのリンクされたソリューションは私のために働いた。
デボラ

回答:


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を再インストールする


10
ステップ1は私のためにトリックをしました!(ただし、Herokuにプッシュする前に、マシンとGithubのSSHキーを再作成しました。)ありがとうございます。
ATSiem 2013年

1
クリーンインストールとすべてで上から2回非常に注意深くそれを行ったにもかかわらず、これのどれも私のために働きませんでした。結局、すべてがうまくいったのは、GitHubキーとHerokuキーが同じであることを確認することでした。HerokuがGitHubに依存していることに何とか気づかなかった場合を除いて、なぜそれが違いを生んだのかさえわかりませんが、どういうわけか問題は修正されました。キーはGitHubのアカウント設定で変更できます。私はあなたがあなたの答えにこれを加えるべきだと思います。
temporary_user_name

1
IdentityFile行を秘密のsshキーにする必要があると思います。stackoverflow.com/a/8874946/2816571
Paul

2
意味heroku createですか?git heroku create私の知る限り、それは問題ではありません。
Michael Dorst 2014年

1
ワオ。この経験について、私は何も楽しいことを言うことができません。git、githubのアンインストール/再インストール、パテのmsysgitへの置き換えなど、さまざまなレシピに従いました。ステップ1-3は最終的にそれを行いましたが、変更はgithubssh_configにある必要がありました。githubキーを問題なくドロップしてリセットした後、herokuプロセスは本当にイライラしました。
wilk 2014

13

herokuキーとgithubキーが同期していません。

  • 使用するキーを決定します(新しいキー、つまりheroku_rsaを作成することをお勧めします)。

  • キーをgithubに追加します。

  • 次を使用して、同じキーをherokuに追加します。heroku keys:add


4
私は本当に、本当に、本当に、 4時間前にこの答えを読んでいればよかったのにと思います。途中でたくさんのことを学んだと思いますが、悪いことばかりではありません。
temporary_user_name

私は2つの異なるHerokuアカウントを持っています(1つは仕事中のプロジェクト用に仕事用メールを使用し、もう1つはフリーランスプロジェクト用に個人用メールを使用しています)。Herokuでは、両方に同じキーを使用することはできません。では、Githubキーを両方に使用するにはどうすればよいですか?(そして、なぜHerokuはGithubキーを特に使用する必要があるのですか?HerokuはGithubと何の関係がありますか?Githubを使用しなかった場合はどうなりますか?)私はとても混乱しています
callum 2013年

チャームのように働いた!ありがとう!
Shashank 2017

2

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

私はずっと前にHerokuにサインアップし、github公開鍵を提供しました。通常のgit push heroku master方法を試すと、次の場所にある秘密鍵が検索されます。~/.ssh/github_rsaます。その後、投稿したメッセージでサイレントに失敗します。

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

  • 一方でsshIDファイルにパスワードの入力を要求されます、gitしません。
  • のような別の方法でIDファイルのロックを解除すると、ロックが解除sshされたままになります。git使用。
  • あるように思われない任意の一般的なUNIXコマンドを含む、恒久IDファイルにパスワード保護を削除する方法についてのドキュメントkeytool
  • 新しい公開鍵と秘密鍵のペアを作成する上記の解決策は、それが問題であることを知らなくても、このパスワードの問題の回避策のようです。


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

0

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

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

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