【发布时间】:2011-11-01 12:30:29
【问题描述】:
我需要 Capistrano 使用 2 个不同的 SSH 密钥。一个用于 git 存储库,一个用于部署到的服务器。
我在 .ssh 文件夹中将哪个键重命名为 id_rsa 都可以。另一个没有。如果我将 git 密钥重命名为 id_rsa,Capistrano 可以连接到 git 存储库,但无法在要部署的服务器上进行身份验证。如果我称它为其他名称,它将无法连接到 git repo。我知道其他密钥有效,因为我可以执行 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 似乎在我的本地机器上使用了正确的密钥,但在部署机器上却没有。
【问题讨论】:
-
你解决过这个问题吗?我也有同样的。
标签: git ssh capistrano