我正在设置Capifony (用于symfony的Capistrano),但在测试多服务器部署时,我遇到了ssh密码的问题。
以下是一些版本:
daniel@fiji:~$ ruby --version
ruby 1.8.7 (2011-06-30 patchlevel 352) [i686-linux]
daniel@fiji:~$ cap --version
Capistrano v2.9.0
daniel@fiji:~$ 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密码,即使它像以前一样设置...这个配置有什么问题?输入密码可以让这个过程继续,一切正常,但我希望避免每次都输入密码。
谢谢,丹尼尔
发布于 2011-11-24 04:48:21
我不明白为什么capistrano一直要你的密码。然而,解决这个问题的一种方法是使用公钥身份验证,capistrano wiki中也建议使用公钥身份验证。(有关如何设置的示例,请参阅this tutorial )
简而言之:
使用ssh-keygen -t rsa -C "youremail"
scp -p .ssh/id_rsa.pub remoteuser@remotehost:
cat id_rsa.pub >> ~/.ssh/authorized_keys。(您可能需要创建.ssh目录)之后,您应该只需要输入密码一次,并且不需要将密码硬编码到deploy.rb文件中。
发布于 2011-11-24 05:26:26
根据更有经验的用户的说法,我可以说使用密码进行ssh身份验证不是一种好的做法。使用ssh keys并依赖它们要好得多。只需删除行
set :password, "sshpassword"显然,在要部署的每个服务器上都要设置公钥。
https://stackoverflow.com/questions/8241639
复制相似问题