添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

I want to generate a set of keys for a home server that I would like to SSH into, so I do ssh-keygen -t rsa , but then I get a message: id_rsa already exists. Overwrite (y/n)?

Well, I don't want to overwrite because the keys I have now I use to SSH into my university's servers, and it would be a pain to have to do all that junk again every time I wanted to switch. Is there an easy way to append the keys?

I tried following a tutorial (which I cannot find) that suggesting something about using the cat command, but I am pretty lost. It seems like the solution is something very simple that I'm just not seeing.

You can use the same public key on both servers. If you don’t want to do that, just specify a different location than ~/.ssh/id_rsa when ssh-keygen prompts you before that, and use it with an agent:

% ssh-agent sh  # Replace with your favourite shell.
$ ssh-add ~/.ssh/id_rsa_2
$ ssh somewhere
$ exit

ssh-agent can also be used without starting a new shell as eval $(ssh-agent).

improve this answer In that case, I'm trying to do the following from my host computer (Windows 7, through Cygwin, trying to copy to Debian): ssh-copy-id -i "C:/Users/FirstName LastName/.ssh/id_rsa.pub" user@hostname, but it's getting angry at me and saying `ERROR: failed to open ID file 'C:/Users/FirstName' – itsmichaelwang Jun 24 '14 at 17:31 @Zapurdead: Try escaping the space and using single quotes: 'C:/Users/FirstName\ LastName/.ssh/id_rsa.pub'. (Single quotes aren’t really necessary, but may as well not double the \.) ssh-copy-id -i ~/.ssh/id_rsa.pub user@hostname, even. – Ry- Jun 24 '14 at 17:33 I tried the second one and I get ERROR: failed to open ID file '/home/FirstName'. Is it thinking my Windows computer is a Linux? – itsmichaelwang Jun 24 '14 at 17:36 It's a no go. Looks like it's a bug? bugs.launchpad.net/ubuntu/+source/openssh/+bug/1074798 – itsmichaelwang Jun 24 '14 at 17:51

You can achieve this by using a config file in your home directory under the .ssh directory:

  • Generate your key as usual:

    ssh-keygen -t rsa
    
  • Don't overwrite the default (usually id_rsa). Instead, create a new name. This will create a separate file with your key.

  • In ~/.ssh create a config file with the following content:

    Host * (asterisk for all hosts or add specific host)
      AddKeysToAgent yes
      UseKeychain yes
      IdentityFile <key> (e.g. ~/.ssh/yourKey)
    
  • The key is now added to the keychain and can be used!

  • You can use multiple IdentityFiles in your config (Mac example):

    Host *
      AddKeysToAgent yes
      UseKeychain yes
      IdentityFile ~/.ssh/id_rsa_private_server
      IdentityFile ~/.ssh/id_rsa_github
      IdentityFile ~/.ssh/id_rsa_work_server
            
                
                        improve this answer
                    Works for me :-) I've got three different ssh keys for three separate servers and I can seamlessly connect to any of the three servers using standard ssh myname@myserver syntax.  If you use ssh -v (verbose) you can see how it tries all the identity files in your .ssh folder.
                        – GreensterRox
                    Nov 21 '17 at 17:03
            
                
                        improve this answer
            
                
                        improve this answer
                        

    You could do as minitech suggested and use the same SSH public key on both servers. To do so, open the file ~/.ssh/id_rsa.pub in your text editor, copy the contents of the file exactly without adding any new spaces or newlines, and add this to the server you want to connect to. If your user name on the server is "user" at IP address 123.45.56.78, use the command "ssh-copy-id user@123.45.56.78", or you can use:

    cat ~/.ssh/id_rsa.pub | ssh user@123.45.56.78 "mkdir -p ~/.ssh && cat >>  ~/.ssh/authorized_keys"
            
                
                        improve this answer
    
  •