我正在尝试使用Capistrano部署一个项目。我的开发机器运行的是Windows7;我要部署到的服务器是Linux。
在deploy.rb脚本中,设置了以下内容:
ssh_options[:forward_agent] = trueCapistrano脚本首先在本地运行一个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推送/拉入中使用它,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。
发布于 2012-08-16 19:40:00
这是一个错误,来自net-ssh as described here
https://stackoverflow.com/questions/10123896
复制相似问题