SSH公钥文件末尾的用户/主机具有什么意义?


72

我不知道为什么在生成的SSH公钥文件ssh-keygen的末尾有用户和主机。

示例:id_rsa.pub

ssh-rsa ... rest of file ... /CA9gyE8HRhNMG6ZDwyhPBbDfX root@mydomain

请注意root@mydomain文件末尾的。

如果我可以与任何用户一起在任何地方使用公钥来使用我的私钥进行身份验证,那么root @ mydomain在身份验证过程中有什么意义?

还是只是占位符才能弄清楚我们的发行人?


2
我已经看到一些要求注释字段包含@符号的过分热心的Web表单,但是没有任何技术原因。
小鸡

Answers:


106

该字段是注释,可以随意更改或忽略。user@host默认情况下,它设置为ssh-keygen


1
简明扼要。能够更改评论将为我解决难题。我认为它在ssh身份验证过程中具有某种作用。
罗勒A

2
@BasilA我有一些密钥已将其完全删除。
迈克尔·汉普顿

3
Google Cloud Compute上将SSH密钥登录设置为实例时,GCC使用此注释字段来标识与密钥相关联的实例上的用户名。
hBy2Py 2015年

52

手册页sshd(8)中有关授权密钥的部分对此进行了简要说明:

协议2公钥包含:选项密钥类型base64编码的密钥comment

openssh授权密钥的上下文中,仅存在注释的含义。但是有SSH实现,这赋予了这一部分的含义,例如,LANCOM调制解调器中的SSH实现正在使用此注释作为对其有效的用户名。


5
+1引用该人
mgarciaisaia 2015年

17

正如其他人指出的那样,它是一种注释,可让确定哪个密钥是哪个密钥。

例如id_rsa.pub,当查看单个键时,并没有太大的区别,但是当查看可能很长的键列表(例如authorized_keys文件中的内容)时,能够轻松识别哪个键非常有用。是哪个

另外,ssh-keygen的默认值为user@hostname,对于典型的用例,它是(user@domain不是)哪个键的明确标识符。


5

非常非常简单:我和您都是使用机器的人。所以看这个例子,您发布了:

ssh-rsa [piles of gobbledygook]…CA9gyE8HRhNMG6ZDwyhPBbDfX root@mydomain

机器可以读取以下内容:

ssh-rsa [piles of gobbledygook]…CA9gyE8HRhNMG6ZDwyhPBbDfX

人类可以阅读以下评论:

root@mydomain

人们往往忘记,即使事情可能看起来在计算机系统复杂,它们实际上可能更加复杂,如果代码被设计用于机器的消耗。我的意思是看模糊的恶意软件代码。一旦将其解码并格式化,就可以被人类阅读。但是有人必须竭尽全力使人类难以阅读。

默认情况下,计算机系统上的所有类型的编码和配置文件都是供人使用的结构,因为……我们是人类,使用机器,而机器不需要诸如此类的东西:

  • 评论。
  • 缩进。
  • 用人类可读的语言编写的变量和函数。

因此,该评论适用于您我和其他任何人。如果没有评论,它很可能会工作。但是有一次,在凌晨3:00某处无法正常工作,而您正在寻找正确的公钥,那么您将希望/梦想/祈祷那里的评论。


7
“机器不需要...缩进” 咳嗽 Python 咳嗽
CVn 2015年

1
@MichaelKjörling“ ...除非让他们关心它们。” :-)
hBy2Py 2015年
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.