21

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

好吧,我不想覆盖,因为我现在拥有的密钥用于通过 SSH 连接到我大学的服务器,而且每次我想切换时都不得不再次做所有这些垃圾会很痛苦。有没有简单的方法来附加密钥?

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

4

5 回答 5

22

您可以通过在目录下的主目录中使用配置文件来实现此目的.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. 钥匙现在已添加到钥匙串中并且可以使用了!

--

您可以在配置中使用多个 IdentityFiles(Mac 示例):

Host *
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile ~/.ssh/id_rsa_private_server
  IdentityFile ~/.ssh/id_rsa_github
  IdentityFile ~/.ssh/id_rsa_work_server
于 2017-03-08T08:56:04.937 回答
10

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

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

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

于 2014-06-24T17:23:59.477 回答
4

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

在终端是:

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

你写作而不是敲打Enter或写作。/home/you/.ssh/id_rsa/home/you/.ssh/id_rsa1

于 2018-03-02T11:16:45.793 回答
1

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

于 2015-05-20T06:20:31.080 回答
1

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