Capistrano y varias keys SSH

Necesito que Capistrano use 2 keys SSH diferentes. Una es para el repository de git, una es para que el server se deployment.

Cualquiera que sea la key que renombre a id_rsa en mi carpeta .ssh, funciona. El otro no. Si cambio el nombre de la key git a id_rsa, Capistrano puede conectarse al repository de git, pero luego no puede autenticarse en el server para implementar. Si lo llamo otra cosa, no podrá conectarse al git repo. Sé que la otra tecla funciona, porque puedo hacer ssh -i ~ / .ssh / otherKey.pem y se conectará con éxito al server.

Esto es lo que tengo en mi deploy.rb file Capistrano.

ssh_options[:keys] = [ File.join(ENV["HOME"], ".ssh", "id_rsa"), File.join(ENV["HOME"], ".ssh", "deploy") ] ssh_options[:forward_agent] = true 

¿Cómo puedo decirle a Capistrano que use AMBAS las keys? Solo parece usar el llamado id_rsa.

editar:

Aquí está la salida de Capistrano con el post de error:

 $ 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 

editar:

Otra cosa: funciona perfectamente desde mi máquina local, simplemente no en el server de implementación, ¡con exactamente los mismos files de configuration! Parece que Capistrano usa las teclas correctas en mi máquina local, pero no en la máquina de implementación.

Descargo de responsabilidad: no sé nada sobre Capistrano.

Si simplemente realiza llamadas ssh normales (o llama a git para hacer esto), puede configurar la key correcta para usar en su ~/.ssh/config por host (o por alias del host).

Por ejemplo, tengo estas líneas en mi file ~/.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 

Tengo esta línea en deploy.rb:

 ssh_options[:keys] = %w(/Users/victor.pudeyev/ec2/MBP-2.pem) 

Esto sugiere que los nombres de file key están separados por espacios, por ejemplo

 ssh_options[:keys] = %w(/Users/victor.pudeyev/ec2/MBP-1.pem /Users/victor.pudeyev/ec2/MBP-2.pem) 

Tuve este problema y tuve el reenvío ssh en el file capfile. Al eliminar eso, permitió que el cuadro de destino usara sus propias keys

Un poco tarde para la fiesta aquí, pero una opción es usar un poco de pegamento de Ruby para detectar qué file usar:

 ['~/.ssh/onekey.pem','~/.ssh/id_rsa'].each do |name| if File.exists?(File.expand_path(name)) ssh_options[:keys] ||= name end end