ubuntusshkeyssh-agent

How to permanently add a private key with ssh-add on Ubuntu?


I have a private key protected with a password to access a server via SSH.

I have 2 linux (ubuntu 10.04) machines and the behavior of ssh-add command is different in both of them.

In one machine, once I use "ssh-add .ssh/identity" and entered my password, the key was added permanently, i.e., every time I shutdown the computer and login again, the key is already added.

In the other one, I have to add the key every time I login.

As far as I remember, I did the same thing on both. The only difference is that the key was created on the one that is added permanently.

Does anyone know how to add it permanently to the other machine as well?


Solution

  • A solution would be to force the key files to be kept permanently, by adding them in your ~/.ssh/config file:

    IdentityFile ~/.ssh/gitHubKey
    IdentityFile ~/.ssh/id_rsa_buhlServer
    

    If you do not have a 'config' file in the ~/.ssh directory, then you should create one. It does not need root rights, so simply:

    nano ~/.ssh/config
    

    ...and enter the lines above as per your requirements.

    For this to work the file needs to have chmod 600. You can use the command chmod 600 ~/.ssh/config.

    If you want all users on the computer to use the key put these lines into /etc/ssh/ssh_config and the key in a folder accessible to all.

    Additionally if you want to set the key specific to one host, you can do the following in your ~/.ssh/config :

    Host github.com
        User git
        IdentityFile ~/.ssh/githubKey
    

    This has the advantage when you have many identities that a server doesn't reject you because you tried the wrong identities first. Only the specific identity will be tried.