我需要让Capistrano使用两个不同的SSH密钥。一个用于git仓库,另一个用于部署到服务器上。
我将其中一个重命名为.ssh文件夹中的id_rsa,它就能工作了。另一个则不能。如果我将git密钥重命名为id_rsa,Capistrano可以连接到git仓库,但无法在服务器上进行身份验证以进行部署。如果我将其命名为其他名称,则无法连接到git仓库。我知道另一个密钥可行,因为我可以使用ssh -i ~/.ssh/otherKey.pem成功连接到服务器。
这是我在deploy.rb Capistrano文件中拥有的内容。
我将其中一个重命名为.ssh文件夹中的id_rsa,它就能工作了。另一个则不能。如果我将git密钥重命名为id_rsa,Capistrano可以连接到git仓库,但无法在服务器上进行身份验证以进行部署。如果我将其命名为其他名称,则无法连接到git仓库。我知道另一个密钥可行,因为我可以使用ssh -i ~/.ssh/otherKey.pem成功连接到服务器。
这是我在deploy.rb Capistrano文件中拥有的内容。
ssh_options[:keys] = [
File.join(ENV["HOME"], ".ssh", "id_rsa"),
File.join(ENV["HOME"], ".ssh", "deploy")
]
ssh_options[:forward_agent] = true
我该如何告诉 Capistrano 使用两个密钥?它似乎只使用名为 id_rsa 的一个密钥。
编辑:
这是带有错误消息的 Capistrano 输出:
$ cap yii deploy
* executing `yii'
Yii
* executing `deploy'
* executing `deploy:update'
** transaction: start
* executing `deploy:update_code'
executing locally: "git ls-remote git@project.beanstalkapp.com:/projectyii.git HEAD"
* executing "git clone -q git@project.beanstalkapp.com:/projectyii.git /var/www/projectyii-trunk/releases/20110824174629 && cd /var/www/projectyii-trunk/releases/20110824174629 && git checkout -q -b deploy 5e14521285ca04a605353e97bdf31c3a2889dbfb && (echo 5e14521285ca04a605353e97bdf31c3a2889dbfb > /var/www/projectyii-trunk/releases/20110824174629/REVISION)"
servers: ["yii.project.com"]
[yii.project.com] executing command
** [yii.project.com :: err] Error reading response length from authentication socket.
** [yii.project.com :: err] Permission denied (publickey,keyboard-interactive).
** [yii.project.com :: err] fatal: The remote end hung up unexpectedly
command finished
*** [deploy:update_code] rolling back
* executing "rm -rf /var/www/projectyii-trunk/releases/20110824174629; true"
servers: ["yii.project.com"]
[yii.project.com] executing command
command finished
failed: "sh -c \"git clone -q git@project.beanstalkapp.com:/projectyii.git /var/www/projectyii-trunk/releases/20110824174629 && cd /var/www/projectyii-trunk/releases/20110824174629 && git checkout -q -b deploy 5e14521285ca04a605353e97bdf31c3a2889dbfb && (echo 5e14521285ca04a605353e97bdf31c3a2889dbfb > /var/www/projectyii-trunk/releases/20110824174629/REVISION)\"" on yii.project.com
编辑:
另外一件事:从我的本地机器完全可以正常工作,只是在部署服务器上无法正常工作——使用完全相同的配置文件!看起来 Capistrano 在我的本地机器上使用了正确的密钥,但在部署机器上没有使用。