Heroku「アクセスが拒否されました(公開鍵)致命的:リモートリポジトリから読み取れませんでした」woes


139

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

とにかく、私は自分の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へのプルとHerokuからのプッシュは完全に機能します。このため、Macのsshキーに問題があるように感じます。両方のキーがHerokuアカウントの下に表示されます。重要な事項の最後にあるメールアドレスは重要ですか?

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

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


herokuキーにパスフレーズを設定しましたか?そして、私はこれ(stackoverflow.com/a/16753800/6309)が役に立たないと思いますか?または、stackoverflow.com
a / 16753800/6309を再

悲しいことに、それはまだ働きません。
thebradbain 2013

:Herokuのは、メンテナンスのときに、時にはこれが起こるstatus.heroku.com
メイビス

回答:


284

これについてはすでに回答済みです。しかし、私は将来的に他の人に役立つかもしれないので、私の解決策を追加したいと思います。

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

簡単に言うと、次の手順に従います。https//devcenter.heroku.com/articles/keys

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

ssh-keygen -t rsa

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

heroku keys:add

2
おかげでクリス、未来からの誰か:)これは私のために働く
Ahmad Ajmi '16

8
heroku keys:追加した私のチュートリアルを見逃していたと思います...ありがとうございます!:)
Ole HenrikSkogstrøm2013年

鍵を生成する必要があるのは、alredyが1つもない場合のみです。私の場合、私はすでに鍵を持っていて、herokuに鍵を追加するだけで済みました
joseramonc

4
最初のものは不要です。heroku keys:addキーがない場合は、キーを作成するのに役立ちます。
Mygod

生成されない場合は実行しssh-keygen -t rsaRSAそれ以外の場合heroku keys:addは十分です
Volatil3

122

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

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

私が正しかったことがわかります。問題はキー自体ではなく、ローカルMacの既知のsshキーのリストに追加していなかったことが原因です。そのため、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を参考にさせていただきたいと思います。


5
私の最初のコメントよりも状況に正確なフィードバックをありがとうございます。+1
VonC 2013

4
Windowsでは、起動Git Bash(フォルダを右クリック)し、ssh-agent実行して`ssh-agent`(バックティックに気を付けて)起動できるようにしてから、上記のようにキーを追加する必要があります。Git Bash/ を開始するたびにこれを実行する必要ssh-agentがあります。追加した内容が忘れられます。
TWiStErRob 2013年

私はこれを行いましたが、それでも機能しませんでした。結局、私の.sshフォルダーがあったディレクトリにHOMEセットと呼ばれる環境変数を追加しなければならなくなりました
Justin

ありがとう-これを理解できなかったでしょう!
Mark Hansen、

これで私の問題は修正されましたが、投票数の多い回答ではありませんでした。おかげで:)
Ryan Brodie

31

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

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

これにほぼ1日費やした後、gitは実際のキーではなく指紋のみを表示していたため、キーがHDまたはherokuのキーと一致することを確認できませんでした。私は既知のhostsファイルを調べて、何を推測したのでしょう...各サーバーのキーを示しており、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動作します。

なんと悪夢なのか、これが誰かの役に立てば幸いです。

ブライアン


1
私があなたの投稿を見るまでこれに私の頭を悩ませました。gitとherokuのキーを同じにするとすぐに、すべてがうまくいきました。しかし、それらが同じである必要がある理由を理解していません。
Kishore Masand

この問題
Ivan Bacher

非常に便利なgitドキュメントリンク、すべてが完璧に機能
HotJard

これは、数日間それを理解しようと試みた後、私にとってはうまくいきました。Herokuがこの厄介なユーザビリティの問題でビジネスを続けることができることに驚いています。これを行う簡単な方法があるはずです。
ルークF.

ありがとうございました。私のために働いた。1つだけ:githubリンクのどこかに「ssh-add」を実行するように言われています。そこで私は問題があったが、私はここで解決策を発見した:stackoverflow.com/questions/17846529/...
アリンCiocan

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
    

6

私はlinux ubuntuで同じケースがあり、それを修正しました。OSが/root/.ssh/とhome / user / .ssh / dirの間で混同されているようです。

  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がキーを見つけることができず、正しいnoを生成するように求められた場合、つまり、私の問題と同じ問題がある場合は、次のようにaddコマンドheroku keys:add /root/.ssh/id_rsa.pubを実行します。追加するパスは、取得したパスになりますステップ2で。
  6. git push heroku master今試して

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


2

同様の問題があり、多くのことを試しました。最終的に私にとってうまくいったのは、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

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

これはWindows 8(8.1)を使用していると言うだけです。また、GoW sshツールが重要であるようです。パテピースなしで使用でき、ssh-keygenを使用できたためです。
user3484361 2014

2

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

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

次に、入力した場合-heroku open

問題は解決されました。

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


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)、最新のものを選択します

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


1

私はこの方法を使用してこの問題を解決します多分あなたはそれを試すことができます

「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>

0

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

つまり、キーをリセットし、コンソールからアプリの名前を変更することでした。詳細については、この質問を確認してください:Herokuプッシュアプ​​リの問題


0

SO So So Simple solutionに移動し、c:/Users/user_name/.ssh/に移動して、すべてのpub / private keyペアを削除します。これにより、herokuがキーを生成します。


0

解決できない類似のheroku sshエラーが発生しました。

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

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

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


私の場合、問題はsshリモートパスの「:」に関連しているようです。(WindowsのGit 1.9.4。)何らかの理由でssh:// git @ host:repoが失敗し、「致命的:リモートリポジトリから読み取れませんでした。」ssh:// git @ host / repoは成功します
FullTimeCoderPartTimeSysAdmin
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.