web-dev-qa-db-ja.com

Herokuの「アクセス許可が拒否されました(公開キー)致命的:リモートリポジトリから読み取れませんでした」という問題

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

とにかく、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を使用していません)。

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

138
thebradbain

私は自分の質問に対する答えを見つけたことを共有したいと思った。

私の問題を書き出すと、それがさらに明確になり、問題がどこにあると思われるのかをさらに調査しました:sshキー

私は正しかったことがわかりました。問題はキー自体にあるのではなく、既知のsshキーのローカルMacのリストに追加していなかったということです。そのため、Herokuアカウントに正しいキーがアップロードされていても、コンピューターでそのキーを見つけることができなかったため、Macで認証できませんでした。ソリューション?

ssh-add ~/.ssh/id_rsa
#and, to confirm it's been added to the known list of keys
ssh-add -l

https://help.github.com/articles/error-permission-denied-publickey を参考にしてください。

121
thebradbain

これはすでに回答済みです。しかし、将来的に他の人に役立つ可能性があるため、ソリューションを追加したいと思います。

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

要するに、次の手順に従ってください: https://devcenter.heroku.com/articles/keys

キーがない場合は、まずキーを作成する必要があります:

ssh-keygen -t rsa

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

heroku keys:add
276
Kris Hollenbeck

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

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

このことにほぼ1日を費やした後、gitは実際のキーではなく指紋のみを表示していることに気付きました。キーがHDまたはherokuのキーと一致することを確認できませんでした。既知のホストファイルを見て、何を推測しました...各サーバーのキーが表示され、gitとherokuの公開キーが一致していないことが明確にわかりました。

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

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

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

これでgit Push heroku masterが機能します。

これは悪夢です。これが誰かの助けになることを願っています。

ブライアン

31
Bryan Myers

私が抱えていた問題は、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
    
17
sjking

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 initgit add .git commit -m 'chore(release): v0.0.1

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

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

  9. アプリを開きますheroku open

3
Ivan Rave

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

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

次に入力すると-heroku open

問題は解決されました。

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

2
nabin

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

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

ここで説明するように、PuTTYとページェントを使用しました: 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 

スタックがPuTTYの使用を示していることを確認します。つまり、動作中のスタックです。

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>@[email protected]
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).
2
user3484361

私は同じエラーを受け取りました、そして私は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)、最新のものを選択します

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

2
rocLv

私はこの方法を使用してこの問題を解決します

「ssh-agentを有効にする」

  1. Gitをダウンロードする

http://git-scm.com/

  1. インストールする

  2. Ssh-agentを有効にする

C:\ Program Files\Git\cmd

start-ssh-agent

私がエージェントを有効にした後のメッセージが消える

1
徐啟倫

ここに表示されていないため、別のソリューションを追加したいと思います。私の問題は、herokuが間違ったURLにリンクしていたことです(URL名をいじり続けていたため)。リモートURLを編集して問題を解決しました:

git remote set-url heroku <heroku-url-here>
1
ytv

SOとても簡単な解決策です。c:/Users/user_name/.ssh/に移動し、pub/private keyのペアをすべて削除します。これにより、herokuがキーを生成します。

0
00imvj00

同様のheroku sshエラーがあり、解決できませんでした。

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

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

Sshの問題を修正/トラブルシューティングする時間がない場合は、すぐに回避できます。

同じ問題がありました。そして、みんなが言ったようにキーをリセットしようとしましたが、それでもうまくいきませんでした。なぜなら、アプリの名前を変更したからです。

だから私はキーをリセットし、コンソールからアプリの名前も変更しました。詳細については、この質問を確認してください: Heroku Push app problem

0
Alin Ciocan