web-dev-qa-db-ja.com

git Push herokuマスター許可が拒否されました(公開キー)。致命的:リモートエンドが予期せずハングアップしました

HerokuがSOをカスタマーサポートとして使用しているため(控えめに言っても見苦しいと思います)、少しイライラしてしまいます。

過去5時間、私はアプリケーションを公開しようと試みてきましたが、常にキーに何か問題があります。何十もの記事を読んで、Herokuが馬鹿げた、完全に不透明なプロセスのどこをめちゃくちゃにしているのかを突き止めるために、何度も何度も試しました。

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

  > heroku keys
  === [email protected] Keys
  ssh-rsa AAAAB3NzaC...avOqfA7ZBd [email protected]

ログインして、問題なくアプリケーション(「アプリケーション」ではなくgitリポジトリを作成しているように見えるため、愚かな名前)を「作成」できます。しかしevery * freaking * timeアプリをプッシュしようとすると、

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

私は、WTFが現在進行中であるという洞察はありません。頼りなくキーボードに頭をぶつけただけで、Googleの全能の神がそれに答えられることを願っています。そして、グーグルはそれに答えていません(それを取り戻させてください、私はこれに答えるために約12の方法を見てきました)。

簡単であるはずのシステムの場合、これは冗談です。私はHerokuのアイデアが好きですが、絶対にnothingを達成するために5つ取った後、間違った選択だと思います。

85
Travis Jensen

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

     $ git remote rm heroku
     $ heroku create
    
  • ステップ5:Heroku Toolkitを再インストールする

149
jquintana

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

  • 使用するキーを決定します(新しいキー、つまりheroku_rsaの作成を推奨します)。

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

  • 次を使用してsameキーをherokuに追加します:heroku keys:add

13

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

かなり前にHerokuにサインアップし、GitHubの公開キーを提供しました。通常のgit Push heroku master、それは行き、私の秘密鍵を探し、~/.ssh/github_rsa。その後、投稿したメッセージでサイレントに失敗します。

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

  • sshはIDファイルのパスワードを要求しますが、gitは要求しません。
  • sshなどの別の方法でIDファイルをロック解除すると、gitの使用のためにロック解除されたままになります。
  • 一般的なUNIXコマンドkeytoolを含む、IDファイルのパスワード保護を完全に削除する方法に関するドキュメントはないようですany.
  • 新しい公開/秘密キーペアを作成する上記のソリューションは、このパスワードの問題の回避策であるように見えますが、それが問題であることはわかりません。
2
owensmartin
2
Cabbibo

私の場合、問題はバックグラウンドで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
1
cobberboy

他に解決策がない場合は、必ずyourアカウントでnotを使用してLinuxシェルにログインしてくださいでrootアカウント。

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

0
Saulo Falcao