一个用户有多个公共密钥


55

这个问题类似于SSH公钥身份验证-一个公钥可以用于多个用户吗?但这是另一回事。

我正在尝试使用ssh,因此任何ssh服务器都可以为您提供答案。

我可以有多个公共密钥链接到同一用户吗?这样做有什么好处?另外,是否可以为使用的不同密钥设置不同的主目录(所有主目录都链接到同一用户)?

如果不清楚,请告诉我。

谢谢。

Answers:


80

您可以根据需要拥有任意数量的键。无论如何,对不同领域使用单独的私钥/公钥集是一个好习惯,例如,一套供个人使用,一套供您的工作使用,等等。

首先,生成两个单独的密钥对,一个用于家庭,一个用于工作:

ssh-keygen -t rsa -f ~/.ssh/id_rsa.home
ssh-keygen -t rsa -f ~/.ssh/id_rsa.work

接下来,在~/.ssh/config文件中添加一个条目,以根据所连接的服务器选择要使用的密钥:

Host home
Hostname home.example.com
IdentityFile ~/.ssh/id_rsa.home
User <your home acct>

Host work
Hostname work.example.com
IdentityFile ~/.ssh/id_rsa.work
User <your work acct>

接下来,将您的内容附加id_rsa.work.pub~/.ssh/authorized_keys工作计算机上,并对家庭计算机上的Home键执行相同的操作。

然后,当您连接到家庭服务器时,您使用其中一个键,而工作服务器中则使用另一个键。

请注意,您可能想将两个密钥都添加到您的密钥中,ssh-agent这样就不必一直输入密码。


即使将id_rsa.work.pub和id_rsa.home.pub种植在同一台服务器上也可以,对吗?原因是我可能是从不同的计算机连接到服务器,所以我想知道,即使每台计算机以相同的用户身份连接到服务器,对每个计算机使用不同的密钥对是否有意义。谢谢。
罗素

2
绝对!在服务器端,ssh将检查authorized_keys文件中的所有公钥,直到找到匹配项。因此,您可以将所有密钥放在服务器上相同的authorized_keys文件中。
Phil Hollenback

@PhilHollenback“ ssh将检查authorized_keys文件中的所有公共密钥,直到找到匹配项为止” –您的意思是它会不断向每个公共密钥的客户端发送挑战,直到客户端证明它可以解密一个密钥为止?您对此有任何参考吗?(确实感兴趣)
aaa90210 '18

5

将多个用户的密钥分配给一个用户是很有意义的。常见原因有:

  • 后备
  • git(例如Push URL: git+ssh://git@git-server/~/repos/MyProject
  • 同步
  • 普通访问应用

只要具有不同的homedir,就可以通过environment="HOME=/home/user1"在authorized_keys文件中添加user1的密钥,来针对每个密钥更改它们。请参阅man authorized_keys

尝试一下,YMMV。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.