2014-06-24 88 views
7

我想生成一组密钥的家庭服务器,我想通过SSH进入的,所以我做ssh-keygen -t rsa,但后来我得到一个消息:id_rsa already exists. Overwrite (y/n)?添加RSA密钥,而不会覆盖

好吧,我不我不想重写,因为现在我用我的密钥进入我大学的服务器,并且每次我想切换时都必须再次做所有的垃圾,这将是一件痛苦的事情。有没有简单的方法来追加键?我尝试了一个教程(我找不到),这个教程提供了关于使用cat命令的一些建议,但我很迷茫。看起来解决方案非常简单,我只是没有看到。

回答

1

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

6

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

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

ssh-agent也可以不启动新的外壳为eval $(ssh-agent)使用。

+0

在这种情况下,我试图从我的主机(Windows 7,通过Cygwin,尝试复制到Debian)执行以下操作:'ssh-copy-id -i“C:/ Users /名字姓氏/ .ssh/id_rsa.pub“用户@主机名”,但它对我生气并说'错误:无法打开ID文件'C:/ Users/FirstName' – itsmichaelwang

+0

@Zapurdead:尝试转义空间并使用单个引号:''C:/ Users/FirstName \ LastName/.ssh/id_rsa.pub'。 (单引号并不是必须的,但也可以不加双引号''''ssh-copy-id -i〜/ .ssh/id_rsa.pub user @ hostname',偶数。 – Ryan

+0

我试了第二个,我得到'错误:无法打开ID文件'/ home/FirstName''。它是否认为我的Windows电脑是Linux? – itsmichaelwang

0

你可以像建议的那样做minitech,并在两台服务器上使用相同的ssh公钥。为此,请在文本编辑器中打开〜/ .ssh/id_rsa.pub文件,准确复制文件内容而不添加任何新空格或换行符,并将其添加到要连接的服务器。如果服务器上的用户名在ip 123.45.56.78处为“user”,请使用命令“ssh-copy-id [email protected]”,或者您可以使用

cat〜/ .ssh/id_rsa.pub | SSH [email protected] “的mkdir -p的〜/ .ssh & &猫>>的〜/ .ssh/authorized_keys的”

2

您可以通过.ssh目录下使用配置文件在你的home目录中实现这一目标:

  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(例如苹果):

Host * 
    AddKeysToAgent yes 
    UseKeychain yes 
    IdentityFile ~/.ssh/id_rsa_private_server 
    IdentityFile ~/.ssh/id_rsa_github 
    IdentityFile ~/.ssh/id_rsa_work_server 
+0

这是否适用于多个ssh密钥(识别文件)? –

+0

对我有用:-)我有三个不同的ssh密钥用于三台独立的服务器,我可以使用标准的'ssh myname @ myserver syntax'无缝连接到三台服务器中的任何一台。如果您使用ssh -v(详细),您可以看到它如何尝试.ssh文件夹中的所有身份文件。 – GreensterRox

+0

那么,您为“IdentityFile”字段指定了哪一个? –

0

我有这个问题,因为你。我已经解决了它。
在终端,
“输入文件,在其中保存密钥(/home/you/.ssh/id_rsa):”
而是按Enter键,或写/home/you/.ssh/id_rsa
你写的/家/你/。ssh/id_rsa1