2016-07-07 25 views
0

我想部署一个Drupal应用程序使用Capistrano 3.3.5(以及net-ssh 3.2.0)。我的部署工作站是运行git-bash的Windows。我也启动了ssh-agent,并为我的私钥运行了ssh-add。Capistrano git:包装不断要求ssh密码

然后我跑:

> cap development deploy 

而且它要求我为我的私钥密码。

Enter passphrase for C:/Users/jgodse/.ssh/id_rsa: my_password 

当我输入“my_password”作为我的SSH密码密码时,它挂起。我做了一个CTRL-C,它接着说:

bash: my_password: command not found 

然后我尝试:

> cap development --dry-run 

打回了几次后,我得到了一个干运行日志。前几行是这样的:

$ cap development deploy --dry-run 
There was a problem tracking statistics, please report to  https://github.com/capistrano/stats 

INFO [4b085395] Running /usr/bin/env mkdir -p /tmp/myapp/ as [email protected] 
DEBUG [4b085395] Command: /usr/bin/env mkdir -p /tmp/myapp/ 
INFO [b5f607a2] Running /usr/bin/env #<StringIO:0x3b9e4d0> /tmp/myapp/git-ssh.sh as [email protected] 
DEBUG [b5f607a2] Command: /usr/bin/env #<StringIO:0x3b9e4d0> /tmp/myapp/git-ssh.sh 
INFO [c0895cc9] Running /usr/bin/env chmod +x /tmp/myapp/git-ssh.sh as [email protected] 

后来我调整了Capfile添加语句:

set :ssh_options, {:forward_agent => true} 

没有变化。

然后我升级到capistrano 3.5.0,并取消capistrano-stats,并将版本锁定到3.5.0。

> cap development deploy --dry-run 

我:

00:00 git:wrapper 
     01 mkdir -p /tmp/myapp/ 
     02 #<StringIO:0x28c7238> /tmp/myapp/git-ssh.sh 
     03 chmod +rx /tmp/myapp/git-ssh.sh 

这告诉我的git:包装任务可能会很麻烦。然后我跑:

> cap development git:wrapper 

我:

00:00 git:wrapper 
     01 mkdir -p /tmp/myapp/ 
Enter passphrase for C:/Users/me/.ssh/id_rsa: 

我得到了相同的结果,当我输入密码前。然后我做:

> cap development git:wrapper --dry-run 

我:

00:00 git:wrapper 
     01 mkdir -p /tmp/myapp/ 
     02 #<StringIO:0x28e2448> /tmp/myapp/git-ssh.sh 
     03 chmod +rx /tmp/myapp/git-ssh.sh 

在这一点上,它看起来像git的:包装任务没有工作,这可能是因为第2步中有这个StringIO的:在它的东西,它看起来像一个Ruby对象id而不是实际的Bash命令。或者它可能是别的。

有没有办法解决这个问题,以便我的部署不会错误地要求我输入密码?

回答

0

您可能需要设置SSH代理,以便在部署时不要求您的密钥的密码短语。

Capistrano酒店文档中有这样的细节:http://capistranorb.com/documentation/getting-started/authentication-and-authorisation/

一个简短的版本可能看起来像:

运行:

eval "$(ssh-agent -s)" 
ssh-add 
# It'll prompt you for your password here. 
cap dev deploy # Or whatever you run to execute Capistrano. 

在这一点上,你应该能够运行Capistrano没有被提示输入密码。

如果这很有用,您可能需要查看如何设置您的shell以跨终端共享ssh-agent会话。

+0

正如我在问题的第二行中所说的,我这样做了,但它仍然无效。 –

+0

如果它要求你的密码,你没有SSH代理实际工作。据说,我忽略了你正在使用Windows。在我看来,所有的投注都在该操作系统上,所以我不知道这个问题是什么。 –

+0

它变得更好。我在Linux上运行它,它工作。 :( –

相关问题