148

私は、一見簡単に修正できるように見える問題の解決策を探して、何時間も探し回ってきました。私の検索で何も見つからなかったわけではありません。私の検索で非常に多くの異なる解決策が見つかりましたが、どれもうまくいきませんでした。

とにかく、Mac から Heroku リポジトリからプッシュ、プル、フェッチすることができません。すべての試行で、(あたかも私を嘲笑しているかのように) 次のエラーが表示されます。

「許可が拒否されました (公開鍵)。致命的: リモート リポジトリから読み取れませんでした。

私はさまざまな方法でそれを修正しようとしました (そして再試行しました)。すでに述べたように、私は過去 2 日間のかなりの時間を答えを探すことに費やしてきました。ここに私が試したことのいくつかがあります:

  • heroku keys:clear に続いて heroku keys:add
  • 「ssh-keygen -t rsa」を使用して自分で ssh キーを再生成する
  • .ssh ディレクトリをクリアし、次に heroku keys:clear を実行し、続いて ssh キーを生成します
  • herokuでアプリを削除して再作成する(幸いなことに、そこにはあまりありませんでした)

GitHub リポジトリから問題なくフェッチできるので、ネットワーク接続ではないことがわかります (heroku への ping も機能します)。

その場しのぎの解決策として (永続的な解決策にならないことを願っています)、Ubuntu Amazon AWS ec2 インスタンスにログインしました。Heroku とのプルとプッシュは完全に機能します。このため、Mac の ssh キーに問題があるように感じます。両方のキーが Heroku アカウントの下に表示されます。キーの末尾にある電子メール アドレスは重要ですか?

編集: GitHub からは問題なくプッシュおよびプルできます (ただし、ssh は使用していません)。

この時点で、私は何でも試してみたいと思っています。ありがとう!

4

14 に答える 14

292

私はこれがすでに答えられていることを知っています。しかし、将来他の人に役立つかもしれないので、私の解決策を追加したいと思います..

一般的なキー エラーは次のとおりPermission denied (publickey)です。keys:addを使用して Heroku に新しいキーを通知することで、これを修正できます。

簡単に言うと、次の手順に従ってください: https://devcenter.heroku.com/articles/keys

キーがない場合は、最初にキーを作成する必要があります。

ssh-keygen -t rsa

次に、キーを Heroku に追加する必要があります。

heroku keys:add
于 2013-08-10T22:40:21.597 に答える
32

(Windows 7で)まったく同じエラーが発生し、原因が異なりました。別の方法で解決したので、他の人のためにここに原因と解決策を追加すると思いました。

エラーはherokuを指しているように見えましたが、実際にはエラーは"Heroku can't get to the git repository". すべてのサーバーで同じキーを持っていると誓ったのは、キーを作成して次々と同時にアップロードしたからです。

これにほぼ 1 日を費やした後、git は実際のキーではなくフィンガープリントのみを表示していることに気付きました。キーが HD または heroku のものと一致することを確認できませんでした。既知のホスト ファイルを調べたところ、各サーバーのキーが表示されており、git と heroku の公開キーが一致していないことがはっきりとわかりました。

1)キーフォルダー内のすべてのファイル、Webサイトを使用してgithubからのキー、およびgit bashとコマンドを使用してherokuからのキーを削除しましたheroku keys:clear

2) github の指示に従って、新しいキー ペアを生成し、公開キーを git にアップロードします

3)git bash- heroku keys:add 同じキーを heroku にアップロードするために使用します。

今すぐgit push heroku master動作します。

なんて悪夢でしょう、これが誰かを助けてくれることを願っています。

ブライアン

于 2013-09-07T18:21:07.147 に答える
17

私が抱えていた問題は、GitHub アカウントに https しか使用していなかったことです。GitHub アカウントが ssh アクセス用に設定されていること、および GitHub と heroku が両方とも同じ公開鍵を使用していることを確認する必要がありました。これらは私が取ったステップです:

  1. ~/.ssh ディレクトリに移動し、そこに id_rsa と id_rsa.pub があれば削除します。必要ではないかもしれませんが、新しいキーから始めました。

    $ cd ~/.ssh
    $ rm id_rsa id_rsa.pub
    
  2. gitHub の手順に従って、ssh キーを生成します。
  3. heroku にログインし、新しいサイトを作成して公開鍵を追加します。

    $ heroku login
    ...
    $ heroku create
    $ heroku keys:add
    $ git push heroku master
    
于 2013-10-22T20:09:26.080 に答える
6

私はLinux ubuntuで同じケースを抱えていて、それを修正しました。OSが/root/.ssh/とhome/user/.ssh/ディレクトリの間で混乱していたようです。私がしたことは次のとおりです。

  1. root および home/user .shh ディレクトリからすべてのキーを削除しました。
  2. 新しいキーを生成した場合は、作成のパス (/home/you/.ssh/id_rsa) または (/root/.ssh/id_rsa) に注意してください。
  3. heroku キーを確認するheroku keys
  4. そこにあるキーがクリアされた場合heroku keys:clear
  5. heroku keys:addここで、heroku がキーを見つけられず、キーを生成するように求められた場合、これは私と同じ問題を抱えていることを意味します。このように add コマンドheroku keys:add /root/.ssh/id_rsa.pubを実行します。追加するパスは、取得したパスになります。ステップ2で。
  6. git push heroku master今すぐ試す
于 2014-08-07T03:58:36.367 に答える
3

Windows 8 での私のやり方

  1. ssh-keygen を含むディレクトリをシステム PATH 変数 (通常は C:\Program Files (x86)\Git\bin) に追加します。

  2. CMD を開き、C:\Users\Me\ に移動します。

  3. SSH キーを生成するssh-keygen -t rsa

    キーを保存するファイルを入力してください (//.ssh/id_rsa): .ssh/id_rsa (デフォルトの間違ったパスを .ssh/somegoodname_rsa に変更します)

  4. Heroku にキーを追加する heroku keys:add

    リストから作成したキーを選択

  5. アプリ ディレクトリに移動し、美しいコードを記述します

  6. git リポジトリを初期化するgit init git add . git commit -m 'chore(release): v0.0.1

  7. Heroku アプリケーションの作成 heroku create

  8. アプリをデプロイするgit push heroku master

  9. アプリを開くheroku open

于 2014-05-07T20:41:04.167 に答える
2

次のように入力して、新しい ssh キーを作成する必要があります - ssh-keygen -t rsa

次に追加する必要があります: - heroku keys:add

次に、入力すると - heroku open

問題は解決しました。

とにかくそれは私のために働いた、あなたはそれを試してみることができます...

于 2014-07-19T20:43:51.330 に答える
2

同様の問題があり、多くのことを試しました。最終的に私にとってうまくいったのは、WindowsにGnuをインストールし(https://github.com/bmatzelle/gow/releases)、Gitのディレクトリではなく、そのディレクトリ内のsshツールを使用していることを確認することでした。インストールしたら、テストを行います (環境 PATH に Git\bin の前にあることを確認してください)

C:\Git\htest2>which ssh
C:\Program Files (x86)\Gow\bin\ssh.BAT

ここで説明されているように、パテとページェントを使用しました: http://rubyonrailswin.wordpress.com/2010/03/08/getting-git-to-work-on-heroku-on-windows-using-putty-plink-pageant/

キーが heroku に送信されたら (heroku keys:add c:\Users\Person.ssh\id_rsa.pub)、

ssh -v <username>@heroku.com 

スタックがパテの使用を示していることを確認します-つまり、作業中のスタック:

Looking up host "heroku.com"
Connecting to 50.19.85.132 port 22
Server version: SSH-2.0-Twisted
Using SSH protocol version 2
**We claim version: SSH-2.0-PuTTY_Release_0.62**
Using Diffie-Hellman with standard group "group1"
Doing Diffie-Hellman key exchange with hash SHA-1
Host key fingerprint is:
ssh-rsa 2048 8b:48:5e:67:0e:c9:16:47:32:f2:87:0c:1f:c8:60:ad
Initialised AES-256 SDCTR client->server encryption
Initialised HMAC-SHA1 client->server MAC algorithm
Initialised AES-256 SDCTR server->client encryption
Initialised HMAC-SHA1 server->client MAC algorithm
Pageant is running. Requesting keys.
Pageant has 1 SSH-2 keys
Using username "*--ommitted for security--*".
**Trying Pageant key #0**
Authenticating with public key "rsa-key-20140401" from agent
Sending Pageant's response
Access granted
Opened channel for session
Server refused to allocate pty
Server refused to start a shell/command
FATAL ERROR: Server refused to start a shell/command

以前に実行されていて失敗したもの:

C:\Git\htest2>ssh -v <username>@gmail.com@heroku.com
OpenSSH_4.6p1, OpenSSL 0.9.8e 23 Feb 2007
debug1: Connecting to heroku.com [50.19.85.156] port 22.
debug1: Connection established.
debug1: identity file /c/Users/Person/.ssh/identity type -1
debug1: identity file /c/Users/Person/.ssh/id_rsa type 1
debug1: identity file /c/Users/Person/.ssh/id_dsa type -1
debug1: Remote protocol version 2.0, remote software version Twisted
debug1: no match: Twisted
debug1: Enabling compatibility mode for protocol 2.0
**debug1: Local version string SSH-2.0-OpenSSH_4.6**
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-cbc hmac-md5 none
debug1: kex: client->server aes128-cbc hmac-md5 none
debug1: sending SSH2_MSG_KEXDH_INIT
debug1: expecting SSH2_MSG_KEXDH_REPLY
debug1: Host 'heroku.com' is known and matches the RSA host key.
debug1: Found key in /c/Users/Person/.ssh/known_hosts:1
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Trying private key: /c/Users/Person/.ssh/identity
debug1: Offering public key: /c/Users/Person/.ssh/id_rsa
debug1: Server accepts key: pkalg ssh-rsa blen 277
debug1: Trying private key: /c/Users/Person/.ssh/id_dsa
debug1: No more authentication methods to try.
Permission denied (publickey).
于 2014-04-01T09:28:16.417 に答える
2

同じエラーが発生しました。4つのsshキーがあるため、次のことを試しました:

ssh-keygen -t rsa
heroku keys:add

次に、4 つのオプションが表示されます。

1) github_rsa.pub
2) id_boot2docker.pub
3) id_rsa.pub
4) sshkey.pub

私は最新の 3) を選びます

次に、エラーを修正します。

于 2014-11-23T09:34:56.583 に答える
1

この問題を解決するためにこの方法を使用します

「sshエージェントを有効にする」

  1. gitをダウンロード

http://git-scm.com/

  1. インストールする

  2. ssh エージェントを有効にする

C:\Program Files\Git\cmd

開始-ssh-エージェント

エージェントを有効にすると、メッセージが消えます

于 2014-07-11T11:26:12.157 に答える
0

解決できない同様のheroku sshエラーがありました。

回避策として、新しい heroku http-git 機能 (ssh の代わりに「heroku」リモートの http トランスポート) を使用しました。詳細はこちら: https://devcenter.heroku.com/articles/http-git

(短いバージョン: プロジェクトが既に標準的な方法でセットアップされている場合は、heroku git:remote --http-init を実行して「heroku」リモートを http に変更します。)

ssh の問題を修正/トラブルシューティングする時間がない場合の迅速な回避策です。

于 2014-11-12T00:11:10.630 に答える