web-dev-qa-db-ja.com

Herokuコードをデプロイするときに権限が拒否されました(公開鍵)。 fatal:リモートエンドが突然ハングアップしました

次のコマンドラインを使用して、コードをherokuにデプロイしようとしています。

git Push heroku master

しかし、次のようなエラーが出ます。

Permission denied (publickey).
fatal: The remote end hung up unexpectedly

私はすでに自分の公開SSH鍵をアップロードしていますが、それでもこのエラーが発生します。

841
vich

Herokuに公開キーをアップロードする必要があります。

heroku keys:add ~/.ssh/id_rsa.pub

公開キーがない場合、Herokuは、シームレスに機能する公開キーを自動的に追加するよう求めます。ただ使用する:

heroku keys:add

以前のすべてのキーをクリアするには、次を実行します。

heroku keys:clear

既存のすべてのキーを表示するには:

heroku keys

編集:

上記は私にとってはうまくいかなかったようです。 HOME環境変数をいじっていたため、SSHは間違ったディレクトリでキーを検索していました。

SSHが正しいディレクトリ内のキーをチェックするようにするには、次を実行します。

ssh -vT [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/Wrong/Directory/.ssh/identity type -1
debug1: identity file /c/Wrong/Directory/.ssh/id_rsa type -1
debug1: identity file /c/Wrong/Directory/.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/Wrong/Directory/.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/Wrong/Directory/.ssh/identity
debug1: Trying private key: /c/Wrong/Directory/.ssh/id_rsa
debug1: Trying private key: /c/Wrong/Directory/.ssh/id_dsa
debug1: No more authentication methods to try.

Permission denied (publickey).

上記から、sshは/c/Wrong/Directory/.sshディレクトリでキーを検索することがわかります。このディレクトリは、herokuに追加したばかりの公開キーがある場所ではありません(heroku keys:add ~/.ssh/id_rsa.pubを使用)(Windows OSでは~HOMEパスを参照し、win 7/8ではC:\Users\UserNameであることに注意してください)

現在のホームディレクトリを表示するには、echo $HOMEまたはecho %HOME%(Windows)を実行します。

HOMEディレクトリを正しく設定するには(正確には.sshディレクトリの親ディレクトリを意味するため、sshは正しいディレクトリでキーを検索できます)、次のリンクを参照してください。

  1. SO環境変数を恒久的に設定する方法に関する回答

  2. sshが間違ったディレクトリでキーを探すことに関する質問とその解決策。

1468
sebarmeli

私は同じ問題を抱えていました、以下のステップは私のために働きました、

->heroku login

[email protected]&password

->cd C:\Users\yourusername\.ssh    (OR for cygwin Shell ->cd ~/.ssh)

->ssh-keygen -t rsa -f id_rsa

空白を使用しないパスフレーズを要求された場合は、パスフレーズを入力してください。ただし、忘れないでください。

鍵を生成したら、次のように追加する必要があります。

$ ssh-add

そして主人公へ

->heroku keys:add "id_rsa.pub"

ディレクトリをワークスペースに変更します。

->git clone [email protected]:stark-dawn-1234.git -o heroku

上記で設定したパスフレーズを使用してください。


実際に私はまた、以下のファイルを削除しますが、それらが詐欺師であるかどうかわからない、

C:\ Users\yourusername.heroku\credientalsおよびC:\ Users\yourusername.ssh\known_hosts

144
Onur Turhan

この問題は数日間私を悩ませていました。

これは役に立つかもしれません。

1)Herokuにあるキーを調べてください。

$ heroku keys
=== 1 key for [email protected]
ssh-dss AAAAB8NzaC...DVj3R4Ww== [email protected]

2)〜/ .ssh/configファイルをビルドします。

$ Sudo vim ~/.ssh/config

この情報で編集

Host heroku.com
Hostname heroku.com 
Port 22 
IdentitiesOnly yes 
IdentityFile ~/.ssh/ssh-dss # location and name of your private key
TCPKeepAlive yes 
User [email protected]
90
jkpham

ここにあなたのSSHキーを管理する方法を説明するリンクがあります: http://devcenter.heroku.com/articles/keys#adding_keys_to_heroku

61
Lithium

私は公開鍵を持っていなかったので、私は同じ問題を抱えていたので、私はしました:

heroku keys:clear
heroku keys:add

それは公開鍵を生成し、それはうまく機能します

34

あなたがWindowsユーザーであれば、ここにある他の解決策はおそらくあなたの問題を解決しないでしょう。

私はWindows 7 64-Bit + Git-1.7.7.1-preview20111027を使用し、解決策は私のキーをC:\users\user\.sshからC:\Program Files (x86)\Git\.sshにコピーすることでした。それが、このgitクライアントがherokuを押すときに鍵を探す場所です。

これが役に立つことを願っています。

31
Leo

これは私のための解決策でした:

ssh-add ~/.ssh/my_heroku_key_rsa
29
Gabor

私の経験を共有する:

Git(私自身のインストール)は 'id_rsa'という名前のキーを探していました。

そのため、私は キーの名前を 'id_rsa'と 'id_rsa.pub' に変更しようとしましたが、うまくいきました。

ところで、私はそれをする他の方法があることをことを確かめるが私はまだより深く見えなかった。

15
Maxence

すでに鍵をアップロードしている場合は、その鍵を削除してから新しい鍵で再度アップロードします。

 heroku keys:remove //removes the existing key
 ssh-keygen -t rsa //generates a new key in ~/.ssh folder
 heroku keys:add    //uploads the new key, if no arguments r passed then the key generated                              
                    //in default directroy i.e., ~/.ssh/id_rsa is uploaded
 git Push heroku

これはうまくいくはずです。

11

私はこれを機能させることを試みるためにあらゆる可能な組み合わせを試みることで3日間自分自身を殺した - 私はついに _ dsa _ キーを代わりに作ってみました、そしてそれはうまくいきました。

RSAではなくDSAを試してください。

(私はUbuntu 11.10、Ruby 1.8.7、heroku 2.15.1を使用しています)

7
Sauce McBoss

Windows 7、64ビットでは、上記の解決方法(Onur Turhanのもの)が私のために働きました。

C:\Users\MyName > heroku login

メールアドレス/パスワードを入力してください

C:\Users\MyName >ssh-keygen -t rsa -f id_rsa

これにより、c:\ Users\MyNameディレクトリに2つのファイル(id_rsaとid_rsa.pub)が生成されました(.sshディレクトリにはありません)。

heroku keys:add id_rsa.pub
git clone [email protected]:some-heiku-xxxx.git -o heroku

私は正しい "id_rsa.pub"ファイルを追加することが最も重要であると思います。keygenを使用して公開鍵を生成した後は、作成時のタイムスタンプを見て正しい鍵を追加していることを確認してください。

6
Hrushikesh

TortoiseGITが私のマシンにインストールされたとき、私はこの問題を抱えていました。から環境変数GIT_SSHを変更した後

"c:\Program Files\TortoiseGit\bin\TortoisePlink.exe"

"c:\Program Files (x86)\Git\bin\ssh.exe"

そしてこのチュートリアルのssh-keygenkeys:addを追っても、うまくいきます。

5
zooli

1つのコマンドで動作します。

heroku keys:add

存在しない場合は作成します。

5
Travis Reeder

押しは私のために働いていて、それから急に止めました。

Heroku apiがダウンタイムを経験している場合は、プッシュしようとするとこのエラーが発生します。

チェック:

https://status.heroku.com/ /

硬くなる前に。

4
Tronathan

従うべき順序

$ heroku login
$ ssh-keygen -t rsa
$ heroku keys:add

2番目のステートメントを実行するときに入力を求めますが、 Enter (return)を3回押すとキーが追加されます。

3
Saurabh Rana

上記の答えは機能しますが、機能する前に追加の手順を実行する必要があることがわかりました。

  1. すべてのid_rsa *ファイルを削除し、 this guideを使用して新しいSSHを生成しました。
  2. その後、私はherokuアプリを破壊しました。 〜/ .heroku/credentialsファイルを削除しました。
  3. 'heroku create'コマンド(そして認証情報ファイルが削除されたので、それはあなたのEメール/パスワードの入力を促します。
  4. 最後に「heroku keys:add」と入力すると、デフォルトの〜/ .ssh/id_rsa.pubファイルがアップロードされます。
  5. できます!ええと……YMMVしかし私はこれを理解しようとして一日中苦労したのでこれが何らかの助けになることを本当に願っています!はは
2
KoalaD

Windows 7で上記のすべてを試してもそれでもうまくいかなかったすべての人のために、ここに私がしたことがあります。 tコマンドプロンプトを開きます。これは機能しません。 - 上記のように を追加してください しかし、#を削除する必要があります。

Host heroku.com
Hostname heroku.com 
Port 22 
IdentitiesOnly yes 
IdentityFile ~/.ssh/ssh-dss
TCPKeepAlive yes 
User [email protected]

git Push heroku master を実行してください。

2
Aymen Mouelhi

Herokuのあなたの.ssh設定を確認してください。 .sshフォルダに移動して設定ファイルを開きます。

cd ~/.ssh
subl config

'subl'はSublime Text用ですが、あなたが望む任意のエディタを使用することができます。 「IdentityFile」という行を探し、それに非公開鍵がリストされていることを確認します。

IdentityFile "/Users/ircmullaney/.ssh/my_ssh"

ではない

IdentityFile "/Users/ircmullaney/.ssh/my_ssh.pub"

それは私のためにそれをやりました。私はなぜ私の設定ファイルに公開バージョンがあるのか​​わかりませんが、それはし、それはエラーを投げていました:

Permissions 0644 for '/Users/ircmullaney/.ssh/my_ssh.pub' are too open.
1
Kevin K

~/.ssh/authorized_keysファイルが正しく設定されていないようです。それを確認する:

  • 正しいパスにあります。
  • ファイルの権限は0600です。
  • ~/.sshの権限は0700です。
1
cdhowie

これらすべてのアイデアを試しても、まだ問題がありました。これは私の問題でした:

私のリモートherokuリポジトリはファンクでした。次のように更新しました。

git remote -v

それから間違っている英雄的なものを取り除きます。

git remote rm heroku

それから新しいものを加えなさい

git remote add heroku [email protected]:sitename.git

アプリのHeroku設定ページからサイト名を取得できます。がんばろう!

1
thatdankent

私は同じ問題を経験していました。これらのステップに従うことは助けになるでしょう:

  1. まず、ログインします。heroku login
  2. すべてのキーをクリア:英雄のキー:クリア
  3. .pub内のローカルフォルダ内のすべてのファイル(すべてのknow_Hostファイルおよび.ssh/ folder)を削除します
  4. 再度ログインします。heroku login - uキーなしでプロンプトが表示されるので、画面の指示に従います。
1
Novpiar Effendi

私がしなければなりませんでした:

$ ssh-keygen -t rsa  
$ heroku keys:add  

それがうまくいった:

$ git Push heroku master  
1
ericj

私が直面した問題は私が "heroku keys:add"を実行するときはいつもWindows上であり、それはgithubキーを選択しました。だからここに私は問題を解決するために従った手順があります

  1. "Document and Settings"フォルダの下の.sshディレクトリに移動し、gitハブキーを削除しました
  2. コマンドheroku keysを実行します。

上記のコマンドは私に新しい鍵を生成するように頼みました、そして、以下は出力が既存の公開鍵を見つけることができませんでした。生成しますか? [Yn] Y新しいSSH公開鍵を生成しています。 SSH公開鍵Cのアップロード:/ Documents and Settings/Admin/.ssh/id_rsa.pub ...完了です。 'heroku' gemは非推奨になり、Heroku Toolbeltに置き換えられました。 https://toolbelt.heroku.com からダウンロードしてインストールしてください。

  1. コマンドheroku keysを再実行します。add

上記のコマンドでは、以下の出力は表示されません。既存の公開鍵が見つかりました。C:/ Documents and Settings/Admin/.ssh/id_rsa.pub SSH公開鍵のアップロードC:/ Documents and Settings/Admin/.ssh/id_rsa.pub ..終わった

  1. 今度はgit Push herokuマスターを使用してください

私は上記の手順を使用して問題を解決し、クラウドにアプリケーションをデプロイすることができました。

1
Ashok

私もこの問題を抱えています。私はMac OSXを使っています。私が修正した方法は、管理者としてログインすることでした。

スードス

パスワード

0
Jake Lin

ディスクユーティリティ(Mac OS X)でパーミッションを修復してみてください。助けて頂きました

0
Ildar

Dmajkicの解決策がついに私を助けてくれます:

Windowsユーザーの場合は、次のようになります。 c:\ Users\UserName.ssh \と!のキーを確認してください。環境変数HOME = c:\ Users\UserName \

0
GKislin

他の答えがうまくいかなかった場合これを試して!

時々あなたが必要とするのはもう一度押すことだけです。それは遅いインターネット接続のために今日私に起こります(あなたがダウンロードしているかP2Pを使用しているとき)。

下のスクリーンショットを見てください。

enter image description here

0
Adrian Enriquez

これは私のために働いたものです。 herokuサイトは既知のホストに追加されていません。 window-other-show view-git-gitリポジトリに移動します。そこからリポジトリをクローンします。クローンを作成したら、作成したばかりのリポジトリを削除してから、ファイルメニューからインポートします。リポジトリを複製してもエクスプローラビューに追加されないため、これを実行してください。これで、gitリポジトリとExplorerビューが完成しました。

0
James Murgolo

あなたが "Sudo"を使いたいなら、例:

Sudo git clone [email protected]......... -o heroku

rootユーザー用のsshキーも生成する必要があります。

Sudo su
cd /root/.ssh  
ssh-keygen -t rsa
....
heroku keys:add id_rsa.pub

そしてそれはうまくいくでしょう。

rootユーザーを使用しない場合は、代わりにユーザーディレクトリにsshキーを生成してください。

cd /home/user/.ssh

私の文章がめちゃくちゃになってしまってすみません...

0
Kiddo

私は英雄のtoolbeltを再インストールしました、そして、それは働きました。

0
Alexis

SSHキーを扱う代わりに、Herokuの新しい beta HTTP Git サポートを試すこともできます。 APIトークンを使用してポート443で実行されるため、SSHキーやポート22は使用しません。

HTTP Gitを使用するには、まずToolbeltが更新されていること、および自分の資格情報が最新であることを確認してください。

$ heroku update
$ heroku login

(Heroku HTTP Gitは他のToolbeltとは少し異なる方法で認証を行うので、これは重要です。)

ベータ版では、関連する--http-githeroku apps:createおよびheroku git:cloneコマンドにheroku git:remoteフラグを渡すことによってHTTPを取得します。新しいアプリを作成してHTTP Gitリモートで設定するには、次のコマンドを実行します。

$ heroku apps:create --http-git

既存のアプリをSSHからHTTP Gitに変更するには、コンピュータのアプリのディレクトリから次のコマンドを実行します。

$ heroku git:remote --http-git
Git remote heroku updated

He​​roku用のHTTP Gitの設定方法の詳細についてはデベロッパーセンターのドキュメント をご覧ください。

0
ryanbrainard

押すとき

git Push heroku production:master 

ホームディレクトリの公開鍵〜/ .ssh/id_rsaが使用されます。

これを修正する

別のユーザーとしてログインする必要があります。

Sudo su 

それから次のコマンドを発行して、フレッシュに始めましょう。

heroku keys:clear //removes existing keys
ssh-keygen -t rsa //generates a new key in ~/.ssh folder (set a password)
heroku keys:add   //uploads the new key, ~/.ssh/id_rsa is uploaded                      
git Push heroku production:master
0
HimalayanCoder

まず隠しファイルがあなたのMacに見えることを確認してください。そうでない場合:

  • 端末を開いてdefaults write com.Apple.Finder AppleShowAllFiles TRUEを入力
  • killall Finder

次のステップ:

  • Users/user_name/.ssh/に移動すると、すべてのファイルが削除されました。
  • ssh-keygen -t dsaで端末タイプを開く
  • それでheroku keys:add ~/.ssh/id_dsa.pub

N.B.私はMac OSX 10.7.2 Lionでそれをやった。手順は他でも同じでなければなりませんが。

0
Munim Dibosh

ディレクトリは必ずしもC:\ Users\[username] \。sshではないことを付け加えたいと思います。公開鍵を作成したディレクトリです。

たとえば、Windowsの私のホームディレクトリはC:\ [username]に変更されました。 .sshサブフォルダ内のあなたのホームディレクトリは、あなたがあなたの鍵を作成したかもしれない最高のそして最もありそうな場所です。次のコマンドでWindowsのホームディレクトリを確認できます。

    echo %HOMEPATH%
0
Nicholas