我想为我想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-keygen
之前提示您时指定与~/.ssh/id_rsa
不同的位置,并将其与代理一起使用:
% ssh-agent sh # Replace with your favourite shell.
$ ssh-add ~/.ssh/id_rsa_2
$ ssh somewhere
$ exit
%
ssh-agent
也可以不像eval $(ssh-agent)
那样启动一个新的shell。
我遇到了和你一样的问题,但我解决了。
终端为:
"输入保存密钥的文件(/home/you/.ssh/id_rsa): "
不是按输入或者写/home/you/.ssh/id_rsa
,而是写/home/you/.ssh/id_rsa1
。
如果我没记错的话,我通过卸载Cygwin并使用命令行来解决这个问题。
您可以按照minitech的建议,在两台服务器上使用相同的SSH公钥。为此,请在文本编辑器中打开文件~/.ssh/id_rsa.pub
,复制该文件的内容,不添加任何新的空格或换行符,并将其添加到要连接的服务器。如果您在服务器上的用户名是"user",IP地址为123.45.56.78,请使用命令"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"