2016-07-07 70 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上運行它,它工作。 :( –