我想为我想通过 SSH 连接到的家庭服务器生成一组密钥,所以我这样做ssh-keygen -t rsa
了,但随后我收到一条消息:id_rsa already exists. Overwrite (y/n)?
好吧,我不想覆盖,因为我现在拥有的密钥用于通过 SSH 连接到我大学的服务器,而且每次我想切换时都不得不再次做所有这些垃圾会很痛苦。有没有简单的方法来附加密钥?
我尝试按照一个教程(我找不到)建议使用该cat
命令,但我很迷茫。似乎解决方案非常简单,我只是没有看到。
我想为我想通过 SSH 连接到的家庭服务器生成一组密钥,所以我这样做ssh-keygen -t rsa
了,但随后我收到一条消息:id_rsa already exists. Overwrite (y/n)?
好吧,我不想覆盖,因为我现在拥有的密钥用于通过 SSH 连接到我大学的服务器,而且每次我想切换时都不得不再次做所有这些垃圾会很痛苦。有没有简单的方法来附加密钥?
我尝试按照一个教程(我找不到)建议使用该cat
命令,但我很迷茫。似乎解决方案非常简单,我只是没有看到。
您可以通过在目录下的主目录中使用配置文件来实现此目的.ssh
:
像往常一样生成您的密钥:
ssh-keygen -t rsa
不要覆盖默认值(通常是id_rsa
)。相反,创建一个新名称。这将使用您的密钥创建一个单独的文件。
在 ~/.ssh 创建一个config
包含以下内容的文件:
Host * (asterisk for all hosts or add specific host)
AddKeysToAgent yes
UseKeychain yes
IdentityFile <key> (e.g. ~/.ssh/yourKey)
钥匙现在已添加到钥匙串中并且可以使用了!
--
您可以在配置中使用多个 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/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)
.
我和你有同样的问题,我解决了。
在终端是:
“输入保存密钥的文件(/home/you/.ssh/id_rsa):”
你写作而不是敲打Enter或写作。/home/you/.ssh/id_rsa
/home/you/.ssh/id_rsa1
如果我没记错的话,我通过卸载 Cygwin 并改用命令行解决了这个问题。
您可以按照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"