I need Capistrano to use 2 different SSH keys. One is for the git repository, one is for the server to deploy to.
Whichever key I rename to id_rsa in my .ssh folder, works. The other one doesn't. If I rename the git key to id_rsa, Capistrano can connect to the git repository, but then can't authenticate at the server to deploy. If I call it something else, it will not be able to connect to the git repo. I know that the other key works, cause I can do ssh -i ~/.ssh/otherKey.pem and it will successfully connect to the server.
This is what I have in my deploy.rb Capistrano file.
ssh_options[:keys] = [ File.join(ENV["HOME"], ".ssh", "id_rsa"), File.join(ENV["HOME"], ".ssh", "deploy") ] ssh_options[:forward_agent] = true
How can I tell Capistrano to use BOTH the keys? It only seems to use the one called id_rsa.
edit:
Here's the output from Capistrano with the error message:
$ cap yii deploy * executing `yii' Yii * executing `deploy' * executing `deploy:update' ** transaction: start * executing `deploy:update_code' executing locally: "git ls-remote [email protected]:/projectyii.git HEAD" * executing "git clone -q [email protected]:/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 [email protected]:/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
edit:
Another thing: it totally works fine from my local machine, just not on the deploy server - with exactly the same config files! It seems Capistrano uses the correct keys on my local machine, but not on the deploy machine.
While using the same password on multiple sites makes your accounts less secure, most of the time you can use the same SSH key for multiple accounts. However, there are specific situations when you'll need to set up more than one SSH key: You have two different Bitbucket Cloud accounts.
However, sometimes you need to work with multiple GitHub accounts on the same system, like a work account and a personal account. To accomplish this, you can create multiple SSH keys and associate each one with different GitHub accounts.
So, when you (as a user) setup your git environment you can create only one ssh-key for each machine you would like to give permission to your GitHub's account. Show activity on this post. Use a key per developer - each dev should generate their own key.
Disclaimer: I don't know anything about Capistrano.
If it simply does normal ssh
calls (or calls git
to do this), you can configure the right key to use in your ~/.ssh/config
on a per-host (or per-host-alias) basis.
For example, I have these lines in my ~/.ssh/config
file:
# 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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With