2011-11-23 55 views
3

我正在設置Capifony(用於symfony的Capistrano),但在測試多臺服務器時,我有一個ssh密碼問題。多服務器部署:詢問每臺服務器的ssh密碼

這裏有些版本:

[email protected]:~$ ruby --version 
ruby 1.8.7 (2011-06-30 patchlevel 352) [i686-linux] 

[email protected]:~$ cap --version 
Capistrano v2.9.0 

[email protected]:~$ uname -a 
Linux fiji 3.0.0-13-generic-pae #22-Ubuntu SMP Wed Nov 2 15:17:35 UTC 2011 i686 i686 i386 GNU/Linux 

和一些配置從deploy.rb:

set :domain, "mydomain" 
... 
set :user, "sshuser" 
set :password, "sshpassword" 
... 
role :web, domain 
role :app, domain 
... 

部署到一臺服務器的偉大工程,無需輸入密碼。一切都好。但是,如果我嘗試將更多的服務器添加到配置(我需要部署到6〜9機)具有這樣的配置:

... 
set :user, "sshuser" 
set :password, "sshpassword" 
role :web, "ipaddr1", "ipaddr2" 
role :app, "ipaddr1", "ipaddr2" 
... 

Capistrano的開始問我SSH密碼,即使列出的每個服務器它的設置與之前一樣......這個配置有什麼問題?輸入密碼可讓該過程繼續進行並且全部正常工作,但我希望避免每次都輸入密碼。

感謝 丹尼爾

回答

4

我不明白爲什麼Capistrano的不斷要求您輸入密碼。然而,解決這個問題的一種方法是使用公鑰認證,這也是capistrano wiki中建議的。 (見this tutorial對於如何設置此例)

簡而言之:使用ssh-keygen -t rsa -C "youremail"

  • 你的公鑰複製到遠程主機scp -p .ssh/id_rsa.pub [email protected]:
  • 您添加

    1. 您生成一個密鑰在服務器上的授權密鑰文件的公鑰:cat id_rsa.pub >> ~/.ssh/authorized_keys。 (您可能需要創建.ssh目錄)

    之後,您只需輸入一次密碼,而不必在deploy.rb文件中將密碼硬編碼。

  • +0

    正如你所看到的,我結束了這個解決方案。我在Capistrano ML上得到了這個建議。謝謝。 – dlondero

    +1

    嗯,即使我使用沒有密碼的ssh密鑰登錄到服務器,它仍然要求我輸入密碼...有什麼我可以做的嗎? –

    1

    根據更有經驗的用戶,我可以說使用密碼進行ssh身份驗證並不是一個好的做法。更好使用ssh keys並依靠它們。只需要刪除該行

    set :password, "sshpassword" 
    

    並明確地在每個要部署的服務器上設置公鑰。

    +2

    ssh密碼根本不應該存在。 ;-) – maraspin