添加RSA密钥而不覆盖

时间:2014-06-24 17:19:07

标签: ssh rsa ssh-keygen

我想为我想要SSH的家庭服务器生成一组密钥,所以我做ssh-keygen -t rsa,但后来收到一条消息:id_rsa already exists. Overwrite (y/n)?

好吧,我不想覆盖,因为我现在使用的密钥用于SSH连接到我大学的服务器,每次我必须再次完成所有垃圾操作会很痛苦想切换。是否有一种简单的方法来附加密钥?

我尝试了一个教程(我找不到),建议使用cat命令,但我很遗憾。似乎解决方案非常简单,我只是没有看到。

5 个答案:

答案 0 :(得分:8)

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

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

ssh-agent也可以在不启动eval $(ssh-agent)的新shell的情况下使用。

答案 1 :(得分:7)

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

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

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

  3. 在〜/ .ssh中创建一个config文件,其中包含以下内容:

    Host * (asterisk for all hosts or add specific host)
      AddKeysToAgent yes
      UseKeychain yes
      IdentityFile <key> (e.g. ~/.ssh/yourKey)
    
  4. 密钥现已添加到钥匙串中,可以使用!

  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
    

答案 2 :(得分:1)

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

答案 3 :(得分:0)

您可以按 minitech 建议,并在两台服务器上使用相同的SSH公钥。为此,请在文本编辑器中打开文件~/.ssh/id_rsa.pub,准确复制文件的内容,而不添加任何新空格或换行符,并将其添加到要连接的服务器。如果服务器上的用户名是&#34; user&#34;在IP地址123.45.56.78,使用命令&#34; 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"

答案 4 :(得分:0)

我和你有同样的问题,我解决了它。

终端是:

&#34;输入要保存密钥的文件(/home/you/.ssh/id_rsa):&#34;

不是点击 Enter 或写/home/you/.ssh/id_rsa,而是写/home/you/.ssh/id_rsa1