如何合并密钥,或处理具有相同文件名的密钥?

如何合并密钥,或处理具有相同文件名的密钥?

我创建了一个名为 id_rsa 的用于登录服务器的密钥(使用 ssh-keygen),因此在我的 .ssh 目录中存在 id_rsa.pub 和 id_rsa。

我使用这个名称的原因是因为当我尝试其他名称时,它们不适用于我的服务器(由于某种原因我无法登录)。

我今天设置了一个新服务器(并在另一台计算机上生成了密钥)。但密钥名称也是 id_rsa。

那么我如何在我的 macbook pro (OSX) 上使用相同的密钥,它已经有一个名为 id_rsa 的密钥,该密钥仍在使用中(我无法摆脱它,因为我需要使用它来登录其他一些帐户)服务器)?

答案1

一般来说,SSH 密钥标识客户端,而不是服务器(嗯,至少对于 中的密钥而言~/.ssh)。建议的方法是为每个客户端生成一个密钥(正如您已经有效完成的那样),并将所有适当的公钥添加到~/.ssh/authorized_keys您需要访问的服务器/帐户上。

因此,在 Macbook Pro 上,您不会添加新服务器的密钥,而是将现有密钥(存储在 Macbook 上)添加到新服务器,通常使用

ssh-copy-id <username>@<server>

如果这不起作用,

cat ~/.ssh/id_rsa.pub

~/.ssh/authorized_keys在您的 Macbook 上并将其复制/粘贴到服务器的末尾。

您需要在每台服务器上使用的每个帐户最终都会看起来~/.ssh/authorized_keys

ssh-rsa AAAAuifi4poojaixahV8thaQu3eQueex0iequ7Eephua4sai8liwiezaic8othisieseepheexaa1zohdouk5ooxas0aoN9ouFa3ejuiK2odahy8Opaen0Niech4Vaegiphagh4EileiHuchoovusu3awahmo4hooShoocoshi3zohw4ieShaivoora7ruuy7igii3UkeeNg5oph6ohN4ciepaifee8ipas9Gei4cee1SohSoo2oCh5ieta5ohQu6eu5PhoomuxoowigaeH2ophau0xo5phoosh3mah7cheD3ioph1FeeZaudiMei4eighish3deixeiceangah5peeT8EeCheipaiLoonaaPhiej0toYe6== user1@host1
ssh-rsa AAAAsaengaitoh4eiteshijee8ohFichah1chaesh4Oeroh2Chae8aich2os1akoh4Waifee5dai3roethah9oojahnietaexo0ia0xiegheixaiwo8aeshui8uZ4chooCohtei8ooMieloo0pahghaeShooth3zae7eigoSe9arei0lohpeij4aeJ3sahfahviaNiejoozeu1zooth8meibooph5IeGuun1lothiur6aleaw8shuof6fah7ooboophoo8nae6aipieshahcae4ShochohZoh4gohX7aes7aes4bo1eiNaeng7Eeghoh6Ge3Maenoh0qui1eiphahWotahGai8ohYohchuubohp3va5dohs== user2@host1
ssh-rsa AAAA3Zohquoh8UavooveiF0aGho8tokaduih4eosai4feiCoophie7ekisuoNii0raizaighahfaik6aibeviojabee1Sheifo8mae0tiecei4Bai8gaiyahvo1eememofiesai0Teyooghah6iovi1zaibie3aePaFeishie0Pheitahka0FaisieVeuceekooSoopoox7Ahhaed2oi6Faeph1airaizee7Aeg8Aiya2oongaC9ing6iGheeg8chei1ogheighieghie1Apode3shibai5eit8oa5shahDaic0shishie0ies7Aijee5ohk1aetha1Quieyafu2oa0Ahwee3mu9tae4AebeiveeFiewohj== user1@host2

这些行在大多数编辑器中都会换行,因此在查看时看起来与上面的不太一样;但每个键只有一行。每行采用以下形式

[options] key-type public-key comment

其中重要的部分是中间部分,即 base64 编码的公钥。任何具有匹配私钥的用户都将被允许使用服务器。

现在通常使用 key 类型ssh-rsa,但您可以预期将来会看到其他类型变得更流行(例如ssh-ed255519)。这取决于生成密钥时给出的选项。

该注释只是为了帮助人们识别密钥,以便偶尔有人可以浏览授权密钥列表并就是否保留密钥做出明智的决定(禁用密钥就像注释行一样简单)#在文件开头带有 a )。通常,注释是与生成的密钥相对应的用户名和主机名(/即/您运行时的用户名ssh-keygen和客户端计算机的主机名)。

可选选项(上面的示例中没有任何选项)允许您控制允许用户在服务器上执行的操作,和/或限制密钥(例如要求它们由特定的证书颁发机构签名) 。详细信息请参见联机sshd帮助页(搜索“AUTHORIZED_KEYS 文件格式”)。

答案2

将其添加到您的~/.ssh/config文件中:

Host *
  IdentityFile ~/.ssh/id_whatever

现在ssh将(也)在连接到主机时尝试使用该文件。

您可以通过显式命名而不是使用 来将其限制为特定主机*

答案3

mv id_rsa idnew_rsa;mv id_rsa.pub idnew_rsa.pub;cat idnew_rsa.pub|ssh user@host 'cat>> ~/.ssh/authorized_keys'会做。
文件名中没有任何内容,只有内容很重要。
ssh -i idnew_rsa user@host

相关内容