添加RSA密钥而不覆盖

its*_*ang 14 ssh rsa ssh-keygen

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

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

我尝试了一个教程(我找不到),提示使用cat命令,但我很丢失.似乎解决方案非常简单,我只是没有看到.

Ry-*_*Ry- 9

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

% ssh-agent sh  # Replace with your favourite shell.
$ ssh-add ~/.ssh/id_rsa_2
$ ssh somewhere
$ exit
%
Run Code Online (Sandbox Code Playgroud)

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


Gre*_*Rox 8

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

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

    ssh-keygen -t rsa
    
    Run Code Online (Sandbox Code Playgroud)
  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)
    
    Run Code Online (Sandbox Code Playgroud)
  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
Run Code Online (Sandbox Code Playgroud)


小智 6

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

在终端中是:

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

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


its*_*ang 1

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