Capistranoを使用してプロジェクトをデプロイしようとしています。私の開発マシンはWindows7を実行しています。私がデプロイしているサーバーはLinuxです。
deploy.rbスクリプトでは、以下が設定されています。
ssh_options[:forward_agent] = true
Capistranoスクリプトは、ローカルでgitコマンドを実行することから始まります。その時点で、SSHキーのパスフレーズの入力を求められます。
* executing `deploy:update_code'
executing locally: "git ls-remote git@github.com:pathto/gitproject.git develop"
Enter passphrase for key '/c/Users/Sam/.ssh/id_rsa':
command finished in 6999ms
(おそらくご覧のとおり、上記から実際のgitパスを削除しました。)
パスフレーズを入力すると、これで問題なく動作します。ただし、Capistranoはリモートマシンで同様のことを実行しようとし(以下ではstaging-server.comに名前が変更されました)、エラーが発生します。この抽出の最後の行を参照してください。
[staging-server.com] executing command
[staging-server.com] sh -c 'git clone git@github.com:pathto/gitproject.git /home/perstest/releases/20120412074500 && cd
/home/perstest/releases/20120412074500 && git checkout -b deploy 50eaf06d06d66fd20c3e55038276f420d8c308a8 && (echo 50eaf06d06d66fd20c3e55038
276f420d8c308a8 > /home/perstest/releases/20120412074500/REVISION)'
** [staging-server.com :: out] Initialized empty Git repository in /home/perstest/releases/20120412074500/.git/
** [staging-server.com :: err] Error reading response length from authentication socket.
deploy.rbのforward_agent行をコメントアウトすると、このインストールは成功します。おそらく、デプロイメントサーバー自体からのキーを使用します。
私のSSHキーは機能しているようです-結局のところ、最初のgitコマンドは機能し、git push / pullで使用でき、ssh -T git@github.comはそれが何をすべきかを報告します(github:helpで推奨されています)。
リモートサーバーからキーを要求されたときに、自分のマシンがキーを提供していないと想定しました。非常に多くのグーグルを行った後、 http://hustoknow.blogspot.co.uk/2011/06/ssh-agent-and-agent-forwarding-on.htmlで、ssh-agentの入手方法を説明する推奨事項を見つけました。起動時に実行されます。これはすべてコマンドプロンプトから実行していたので、次にgit-bashに切り替えて、リンク先のスクリプトを含めるように.bash_profileを設定しました。
これを追加した後、最初にgit bashを起動したときにパスフレーズの入力を求められ、SSHキーを使用してgithubに接続できました(パスフレーズを再入力する必要はありません)。さらに、ssh-add -Lは、実際に使用可能なキーがあることを報告しました。したがって、すべてが正しく設定されているようです。
ただし、「認証ソケットからの応答長の読み取りエラー」が発生します。エラー。
何か案は?これは、開発マシンがLinuxである私の同僚(同じdeploy.rbファイル)で機能します。