12

我正在尝试使用 Capistrano 部署一个项目。我的开发机器运行的是 Windows 7;我要部署的服务器是 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 文件)。

4

1 回答 1

4

这是来自 net-ssh 的错误,如此处所述

于 2012-08-16T11:40:00.017 回答