git – Capistrano和几个SSH密钥

我需要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使用BOTH的钥匙?它似乎只是使用一个叫做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在本地机器上使用正确的键,但不在部署机器上。

免责声明:我对Capistrano不了解。

如果只是执行正常的ssh调用(或调用git来执行此操作),则可以在每个主机(或每个主机别名)的基础上配置在〜/ .ssh / config中使用的正确密钥。

例如,我的〜/ .ssh / config文件中有这些行:

# Git bei Github
Host github.com
User git
IdentityFile ~/.ssh/svn_id_rsa

#  Andere Mathe-Hosts
Host *.math.hu-berlin.de
User ebermann
IdentityFile ~/.ssh/id_rsa
ControlMaster auto
翻译自:https://stackoverflow.com/questions/7154161/capistrano-and-several-ssh-keys

转载注明原文:git – Capistrano和几个SSH密钥