我在这里感到茫然,在淘海之后(阅读:互联网)寻求解决方案,我只剩下其他东西。任何帮助表示感谢。
我在本地运行capistrano,可以部署到几个不同的环境中。 (我在Windows 7上,fwiw)。一切顺利,直到我需要在单个部署期间部署到多个:app服务器。
我打电话给cap deploy
时,通常会提示我输入一次密码短语。我有ssh-agent运行(git从来没有为我的通行证而烦恼)但是尽管如此,Capistrano在每次部署时都一直在窃听我。无论如何,它在部署到一台主机时始终有效。
现在,当我尝试一次部署到多个服务器时,它会询问我的密码短语似乎是多次:
(ips删除了ips)
servers: ["redacted", "redacted"]<br />
Enter passphrase for ~/.ssh/id_rsa: Enter passphrase for ~/.ssh/id_rsa:
所以上面我输入我的密码,但这不起作用。它等待的时间很短,然后吐出这个错误:
connection failed for: <one of the server ips> (NoMethodError: undefined method `overwrite' for nil:NilClass)
这就是结束。
role :app, "ip 1 removed", "ip 2 removed"
default_run_options[:max_hosts] = 1
,它可以正常工作,但是它会为我正在部署的每个主机的每个连接请求我的密码。这最终会有很多。基本上我正在寻找以下任何一种(但不限于此): - “你永远不会在Windows上修复它” - “这就是你在capistrano中实现真正无密码部署的方法” - “你有没有忽略这个设置/功能?” - “我有一块可以修理任何东西的岩石,你可以借用它”
谢谢!
答案 0 :(得分:0)
用户变量设置为什么?从带有Capfile的目录运行一个简单的invoke命令,该命令应该尝试在列出的每个服务器上执行。它是否成功连接?
cap invoke COMMAND="echo 'Hello World'"
如果不能运行那么您的用户可能与您的ssh无密码代理不同。您还可以查看服务器上的SSH日志,看看是否可以告诉代理实际尝试连接失败的原因。
答案 1 :(得分:0)
我实际上遇到了同样的问题并通过提供“default_run_options [:max_hosts] = 1”并使用ssh-agent来缓存我的密码来纠正它(真的修补了它)。当然,这不是一个理想的解决方案,核心问题仍然隐藏在表面之下。
答案 2 :(得分:0)
您是否曾尝试使用putty-agent存储ssh密码?
可能不是直接响应,但您可以安装msysgit并选择msysgit完全添加到PATH,也选择使用putty-agent进行身份验证。
答案 3 :(得分:0)
我有一个几乎完全相同的问题(在Ubuntu 10.04上),除了得到错误connection failed for...
之外,它只会坐在那里,什么都不做,直到我按CTRL + C.
解决方案是通过键入ssh-add /path/to/my/private/key
手动将我的SSH密钥添加到我的密钥环。它问我输入的密码。然后,我可以在不输入密码的情况下运行cap production invoke COMMAND="hostname"
和cap production deploy
。
我确实设置了ssh_options[:forward_agent] = true
。