Server Fault is a question and answer site for system and network administrators. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I'm working on adding ssh authentication to a fresh Linode Ubuntu 12.04LTS deployment. I followed their guide to the letter up to the point where I need to ssh into the box with my now freshly added ssh key, but I instead get:

"Error: agent admitted failure to sign using the key"

Which is fine, the Ubuntu OpenSSH guide says that all you need to do is to run


on the server and you'll be golden. Except when I do that I get

Could not open a connection to your authentication agent.

I double-checked the processes and indeed it does look like ssh-agent is already running (in fact twice, because I tried the eval trick, which didn't work at all):

alex@mybox:~$ ps aux | grep ssh
root      2645  0.0  0.1  49948   776 ?        Ss   Mar13   0:00 /usr/sbin/sshd -D
alex     16989  0.0  0.0  12492   324 ?        Ss   Mar13   0:00 ssh-agent
root     18986  0.0  0.7  73360  3564 ?        Ss   09:03   0:00 sshd: alex [priv]   
alex     19119  0.0  0.3  73360  1676 ?        S    09:03   0:00 sshd: alex@pts/0    
alex     19785  0.0  0.0  12492   316 ?        Ss   09:59   0:00 ssh-agent
root     20026  0.0  0.7  73360  3568 ?        Ss   10:02   0:00 sshd: alex [priv]   
alex     20184  0.0  0.3  73360  1680 ?        S    10:03   0:00 sshd: alex@pts/1    
alex     20325  0.0  0.1   9384   924 pts/1    S+   10:13   0:00 grep --color=auto ssh

As I mentioned, the eval approach managed to make ssh-add work once, but when I tried to log in again, the system reported the same error I listed above. I also now have two instances of ssh-agent.

What is the proper way of addressing this?

share|improve this question

marked as duplicate by dawud, mdpc, Ward, Andrew Schulman, Sven Mar 31 '15 at 12:07

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

Try starting the ssh-agent for your current bash session. Here is what you need to do.

  1. Test your current env for ssh-agent PID:

    env | grep ^SSH
  2. If you don't notice any, then start the ssh-agent for your current env:

    exec ssh-agent bash
  3. Now try to add the key:

share|improve this answer

Make sure the SSH_AGENT_PID environment variable is set to the PID of the SSH agent, and that SSH_AUTH_SOCK is set to the path of the agent's socket (usually in the /tmp directory, for example: /tmp/ssh-wpNhPp3007/agent.3007)

ssh-add can use these variables to add your key.

share|improve this answer

You may also use the following syntax:

ssh-agent sh -c 'ssh-add && echo Do some stuff here.'
share|improve this answer

Your problem is on the client, not on the server. The system on which sshd is running doesn't care about ssh-add/ssh-agent. It just checks whether the client system is capable of making the authorizing digital signature. Whether this signature is made by ssh, by ssh-agent or even by a smartcard does not make a difference.

If you do not use one of the standard files (but e.g. ~/.ssh/id_rsa_newbox) then you have to tell either ssh (-i ~/.ssh/id_rsa_newbox) or ssh-agent (ssh-add ~/.ssh/id_rsa_newbox`) to use this non-standard file.

share|improve this answer

Not the answer you're looking for? Browse other questions tagged or ask your own question.