次のコマンドラインを使用して、コードをherokuにデプロイしようとしています。
git Push heroku master
しかし、次のようなエラーが出ます。
Permission denied (publickey).
fatal: The remote end hung up unexpectedly
私はすでに自分の公開SSH鍵をアップロードしていますが、それでもこのエラーが発生します。
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は正しいディレクトリでキーを検索できます)、次のリンクを参照してください。
私は同じ問題を抱えていました、以下のステップは私のために働きました、
->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
この問題は数日間私を悩ませていました。
これは役に立つかもしれません。
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]
ここにあなたのSSHキーを管理する方法を説明するリンクがあります: http://devcenter.heroku.com/articles/keys#adding_keys_to_heroku
私は公開鍵を持っていなかったので、私は同じ問題を抱えていたので、私はしました:
heroku keys:clear
heroku keys:add
それは公開鍵を生成し、それはうまく機能します
あなたがWindowsユーザーであれば、ここにある他の解決策はおそらくあなたの問題を解決しないでしょう。
私はWindows 7 64-Bit + Git-1.7.7.1-preview20111027を使用し、解決策は私のキーをC:\users\user\.ssh
からC:\Program Files (x86)\Git\.ssh
にコピーすることでした。それが、このgitクライアントがherokuを押すときに鍵を探す場所です。
これが役に立つことを願っています。
これは私のための解決策でした:
ssh-add ~/.ssh/my_heroku_key_rsa
私の経験を共有する:
Git(私自身のインストール)は 'id_rsa'という名前のキーを探していました。
そのため、私は キーの名前を 'id_rsa'と 'id_rsa.pub' に変更しようとしましたが、うまくいきました。
ところで、私はそれをする他の方法があることをことを確かめるが私はまだより深く見えなかった。
すでに鍵をアップロードしている場合は、その鍵を削除してから新しい鍵で再度アップロードします。
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
これはうまくいくはずです。
私はこれを機能させることを試みるためにあらゆる可能な組み合わせを試みることで3日間自分自身を殺した - 私はついに _ dsa _ キーを代わりに作ってみました、そしてそれはうまくいきました。
RSAではなくDSAを試してください。
(私はUbuntu 11.10、Ruby 1.8.7、heroku 2.15.1を使用しています)
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を使用して公開鍵を生成した後は、作成時のタイムスタンプを見て正しい鍵を追加していることを確認してください。
TortoiseGITが私のマシンにインストールされたとき、私はこの問題を抱えていました。から環境変数GIT_SSH
を変更した後
"c:\Program Files\TortoiseGit\bin\TortoisePlink.exe"
に
"c:\Program Files (x86)\Git\bin\ssh.exe"
そしてこのチュートリアルのssh-keygen
とkeys:add
を追っても、うまくいきます。
1つのコマンドで動作します。
heroku keys:add
存在しない場合は作成します。
押しは私のために働いていて、それから急に止めました。
Heroku apiがダウンタイムを経験している場合は、プッシュしようとするとこのエラーが発生します。
チェック:
硬くなる前に。
従うべき順序
$ heroku login
$ ssh-keygen -t rsa
$ heroku keys:add
2番目のステートメントを実行するときに入力を求めますが、 Enter (return)を3回押すとキーが追加されます。
上記の答えは機能しますが、機能する前に追加の手順を実行する必要があることがわかりました。
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 を実行してください。
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.
~/.ssh/authorized_keys
ファイルが正しく設定されていないようです。それを確認する:
~/.ssh
の権限は0700です。これらすべてのアイデアを試しても、まだ問題がありました。これは私の問題でした:
私のリモートherokuリポジトリはファンクでした。次のように更新しました。
git remote -v
それから間違っている英雄的なものを取り除きます。
git remote rm heroku
それから新しいものを加えなさい
git remote add heroku [email protected]:sitename.git
アプリのHeroku設定ページからサイト名を取得できます。がんばろう!
私は同じ問題を経験していました。これらのステップに従うことは助けになるでしょう:
.pub
内のローカルフォルダ内のすべてのファイル(すべてのknow_Host
ファイルおよび.ssh/ folder
)を削除します私がしなければなりませんでした:
$ ssh-keygen -t rsa
$ heroku keys:add
それがうまくいった:
$ git Push heroku master
私が直面した問題は私が "heroku keys:add"を実行するときはいつもWindows上であり、それはgithubキーを選択しました。だからここに私は問題を解決するために従った手順があります
上記のコマンドは私に新しい鍵を生成するように頼みました、そして、以下は出力が既存の公開鍵を見つけることができませんでした。生成しますか? [Yn] Y新しいSSH公開鍵を生成しています。 SSH公開鍵Cのアップロード:/ Documents and Settings/Admin/.ssh/id_rsa.pub ...完了です。 'heroku' gemは非推奨になり、Heroku Toolbeltに置き換えられました。 https://toolbelt.heroku.com からダウンロードしてインストールしてください。
上記のコマンドでは、以下の出力は表示されません。既存の公開鍵が見つかりました。C:/ Documents and Settings/Admin/.ssh/id_rsa.pub SSH公開鍵のアップロードC:/ Documents and Settings/Admin/.ssh/id_rsa.pub ..終わった
私は上記の手順を使用して問題を解決し、クラウドにアプリケーションをデプロイすることができました。
私もこの問題を抱えています。私はMac OSXを使っています。私が修正した方法は、管理者としてログインすることでした。
スードス
パスワード
ディスクユーティリティ(Mac OS X)でパーミッションを修復してみてください。助けて頂きました
Dmajkicの解決策がついに私を助けてくれます:
Windowsユーザーの場合は、次のようになります。 c:\ Users\UserName.ssh \と!のキーを確認してください。環境変数HOME = c:\ Users\UserName \
他の答えがうまくいかなかった場合これを試して!
時々あなたが必要とするのはもう一度押すことだけです。それは遅いインターネット接続のために今日私に起こります(あなたがダウンロードしているかP2Pを使用しているとき)。
下のスクリーンショットを見てください。
これは私のために働いたものです。 herokuサイトは既知のホストに追加されていません。 window-other-show view-git-gitリポジトリに移動します。そこからリポジトリをクローンします。クローンを作成したら、作成したばかりのリポジトリを削除してから、ファイルメニューからインポートします。リポジトリを複製してもエクスプローラビューに追加されないため、これを実行してください。これで、gitリポジトリとExplorerビューが完成しました。
あなたが "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
私の文章がめちゃくちゃになってしまってすみません...
私は英雄のtoolbeltを再インストールしました、そして、それは働きました。
SSHキーを扱う代わりに、Herokuの新しい beta HTTP Git サポートを試すこともできます。 APIトークンを使用してポート443で実行されるため、SSHキーやポート22は使用しません。
HTTP Gitを使用するには、まずToolbeltが更新されていること、および自分の資格情報が最新であることを確認してください。
$ heroku update
$ heroku login
(Heroku HTTP Gitは他のToolbeltとは少し異なる方法で認証を行うので、これは重要です。)
ベータ版では、関連する--http-git
、heroku 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
押すとき
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
まず隠しファイルがあなたの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でそれをやった。手順は他でも同じでなければなりませんが。
ディレクトリは必ずしもC:\ Users\[username] \。sshではないことを付け加えたいと思います。公開鍵を作成したディレクトリです。
たとえば、Windowsの私のホームディレクトリはC:\ [username]に変更されました。 .sshサブフォルダ内のあなたのホームディレクトリは、あなたがあなたの鍵を作成したかもしれない最高のそして最もありそうな場所です。次のコマンドでWindowsのホームディレクトリを確認できます。
echo %HOMEPATH%