我不明白为什么生成的 SSH 公钥文件ssh-keygen
末尾会有用户和主机。
例子:id_rsa.pub
ssh-rsa ... rest of file ... /CA9gyE8HRhNMG6ZDwyhPBbDfX root@mydomain
注意root@mydomain
文件末尾的。
如果我可以向任何用户在任何地方使用公钥,并使用我的私钥进行身份验证,那么 root@mydomain 对身份验证过程有什么意义?
或者它只是一个占位符,用来标记它是由谁发布的?
答案1
user@host
此字段为注释,可随意更改或忽略。默认情况下,设置为ssh-keygen
。
这OpenSSHsshd(8)
手册页描述公钥的格式如下:
公钥由以下以空格分隔的字段组成:选项、密钥类型、base64 编码的密钥、注释......注释字段不用于任何用途(但可能方便用户识别密钥)。
密钥注释可能有助于识别密钥。创建密钥时,注释被初始化为“user@host”,但可以使用 -c 选项进行更改。
答案2
手册页对此进行了简要说明sshd(8)
在有关授权密钥的部分中:
协议 2 的公钥由以下部分组成:选项,密钥类型,base64 编码的密钥,
comment
。
在openssh
授权密钥的上下文中,只有注释的含义。但是有些 SSH 实现赋予了此部分含义,例如 LANCOM 调制解调器中的 SSH 实现使用此注释作为密钥有效的用户名。
答案3
正如其他人指出的那样,这是一条允许你来识别哪个键是哪个。
例如,当查看单个键时,id_rsa.pub
它不会产生很大的区别,但是当查看可能很长的键列表(例如文件中的键)时authorized_keys
,能够轻松识别哪个键是哪个键非常有帮助。
此外,ssh-keygen
的默认值是user@hostname
,对于典型的用例来说,它可以清楚地标识出它是哪个键(user@domain
不会是)。
答案4
非常简单:我和你都是使用机器的人类。所以看看你发布的这个例子:
ssh-rsa [piles of gobbledygook]…CA9gyE8HRhNMG6ZDwyhPBbDfX root@mydomain
机器可以读取以下内容:
ssh-rsa [piles of gobbledygook]…CA9gyE8HRhNMG6ZDwyhPBbDfX
人类可以读到这个评论:
root@mydomain
人们往往会忘记,尽管事情可能看在计算机系统上很复杂,它们实际上可能是吨如果代码设计得更复杂仅有的供机器使用。我的意思是看看模糊的恶意软件代码。一旦你解码并格式化它,它就是人类可读的。但有人必须想尽办法让它难以被人类阅读。
默认情况下全部计算机系统上的编码和配置文件类型是供人类使用的结构,因为……我们是使用机器的人类,而机器不需要如下东西:
- 评论。
- 缩进。
- 用人类可读的语言编写的变量和函数。
因此,这条评论只针对你和我,不针对其他任何人。即使没有评论,它也很可能会起作用。但是,如果凌晨 3 点出现问题,而你正在寻找正确的公钥,你就会希望/梦想/祈祷评论就在那里。