我想为我想要SSH的家庭服务器生成一组密钥,所以我做ssh-keygen -t rsa
,但后来收到一条消息:id_rsa already exists. Overwrite (y/n)?
好吧,我不想覆盖,因为我现在使用的密钥用于SSH连接到我大学的服务器,每次我必须再次完成所有垃圾操作会很痛苦想切换。是否有一种简单的方法来附加密钥?
我尝试了一个教程(我找不到),建议使用cat
命令,但我很遗憾。似乎解决方案非常简单,我只是没有看到。
答案 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
目录下的主目录中使用配置文件来实现此目的:
像往常一样生成密钥:
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
答案 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
。