添加RSA密钥而不覆盖



我想为我想SSH进入的主服务器生成一组密钥,所以我执行ssh-keygen -t rsa,但随后我得到一条消息:id_rsa already exists. Overwrite (y/n)?

嗯,我不想重写,因为我现在用我的密钥SSH到我大学的服务器上,每次我想切换时都要做所有这些垃圾事情,这将是一种痛苦。有没有简单的方法来附加键?

我试着遵循一个教程(我找不到),建议使用cat命令,但我很失落。解决方案似乎很简单,只是我没有看到。

您可以通过在.ssh目录下的主目录中使用配置文件来实现这一点:

  1. 像往常一样生成密钥:

    ssh-keygen -t rsa
    
  2. 不要覆盖默认值(通常是id_rsa)。相反,创建一个新名称。这将用你的密钥创建一个单独的文件。

  3. 在~/
  4. 。ssh创建config文件,内容如下:

    Host * (asterisk for all hosts or add specific host)
      AddKeysToAgent yes
      UseKeychain yes
      IdentityFile <key> (e.g. ~/.ssh/yourKey)
    
  5. 钥匙现在被添加到钥匙链上,可以使用了!

,

你可以在你的配置中使用多个IdentityFiles (Mac的例子):

Host *
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile ~/.ssh/id_rsa_private_server
  IdentityFile ~/.ssh/id_rsa_github
  IdentityFile ~/.ssh/id_rsa_work_server

可以在两台服务器上使用相同的公钥。如果您不想这样做,只需在ssh-keygen之前提示您时指定与~/.ssh/id_rsa不同的位置,并将其与代理一起使用:

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

ssh-agent也可以不像eval $(ssh-agent)那样启动一个新的shell。

我遇到了和你一样的问题,但我解决了。

终端为:

"输入保存密钥的文件(/home/you/.ssh/id_rsa): "

不是按输入或者写/home/you/.ssh/id_rsa,而是写/home/you/.ssh/id_rsa1

如果我没记错的话,我通过卸载Cygwin并使用命令行来解决这个问题。

您可以按照minitech的建议,在两台服务器上使用相同的SSH公钥。为此,请在文本编辑器中打开文件~/.ssh/id_rsa.pub,复制该文件的内容,不添加任何新的空格或换行符,并将其添加到要连接的服务器。如果您在服务器上的用户名是"user",IP地址为123.45.56.78,请使用命令"ssh-copy-id user@123.45.56.78",或者您可以使用:

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