使用forward_agent选项从Windows部署Capistrano:"从身份验证套接字读取响应长度时出错."

Sam*_*Sam 12 capistrano ssh-agent git-bash

我正在尝试使用Capistrano部署项目.我的开发机器正在运行Windows 7; 我正在部署的服务器是Linux.

在deploy.rb脚本中,设置以下内容:

ssh_options[:forward_agent] = true
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

(我可能已经从中看到了真正的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.
Run Code Online (Sandbox Code Playgroud)

如果我在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报告确实有一个密钥可用.所以一切似乎都设置正确!

但是,我仍然收到"从身份验证套接字读取响应长度的错误".错误.

有任何想法吗?这适用于我的同事(同一个deploy.rb文件),其开发机器是Linux.

小智 4

这是 net-ssh 的一个错误,如下所述

  • 我不确定该页面上描述的错误是否与我看到的错误完全相同 - 错误消息不同。但是,该页面确实引用了[有关代理转发和 Windows 的已归档问题](https://github.com/net-ssh/net-ssh/issues/55),因此如果该问题得到修复,可能会解决问题即使具体错误有所不同,也适合我的情况。我现在实际上已经切换到 Linux(出于其他原因),所以这是解决问题的一种方法;-) (2认同)