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

Bas*_*l A 99 ssh ssh-keygen ssh-keys

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

示例:id_rsa.pub

ssh-rsa ... rest of file ... /CA9gyE8HRhNMG6ZDwyhPBbDfX root@mydomain
Run Code Online (Sandbox Code Playgroud)

注意root@mydomain文件末尾的 。

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

或者它只是一个占位符来确定我们是谁发布的?

Mic*_*ton 132

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

OpenSSH的sshd(8)手册页描述了这样一个公共密钥的格式:

公钥由以下空格分隔的字段组成:选项、密钥类型、base64 编码的密钥、注释。. . . 注释字段不用于任何事情(但可能方便用户识别密钥)。

ssh-keygen(1)手册页说:

密钥注释可能有助于识别密钥。创建密钥时,注释被初始化为“user@host”,但可以使用 -c 选项进行更改。

  • 在 [Google Cloud Compute](https://cloud.google.com/compute/) 上设置 SSH 密钥登录实例时,GCC 使用此注释字段来标识要使用该密钥的实例上的用户名联系。 (4认同)
  • 简短而切题。能够随意更改评论为我解决了这个难题。我认为它在 ssh 身份验证过程中具有某种作用。 (2认同)
  • @BasilA 我有一些钥匙已经完全删除了。 (2认同)

Jak*_*uje 54

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

协议 2 公钥包括:options , keytype , base64-encoded key , comment.

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

  • +1 引用此人 (6认同)

Håk*_*ist 18

正如其他人指出的那样,这是一个注释,可让确定哪个键是哪个。

例如id_rsa.pub,在查看单个键时,它不会产生很大差异,但是当查看可能很长的键列表(例如authorized_keys文件中的内容)时,能够轻松识别哪个键非常有帮助是哪个。

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


Gia*_*968 5

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

ssh-rsa [piles of gobbledygook]…CA9gyE8HRhNMG6ZDwyhPBbDfX root@mydomain
Run Code Online (Sandbox Code Playgroud)

一台机器可以读取这个:

ssh-rsa [piles of gobbledygook]…CA9gyE8HRhNMG6ZDwyhPBbDfX
Run Code Online (Sandbox Code Playgroud)

人类可以阅读此评论:

root@mydomain
Run Code Online (Sandbox Code Playgroud)

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

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

  • 注释。
  • 压痕。
  • 用人类可读的语言编写的变量和函数。

所以评论是给你和我的,没有其他人。它很可能在没有评论的情况下工作。但是,有一次在凌晨 3:00 某事无法正常工作并且您正在寻找正确的公钥,您将希望/梦想/祈祷评论在那里。

  • “机器不需要像......压痕之类的东西”*咳嗽* Python *咳嗽* (7认同)
  • @MichaelKjörling “......除非他们被要求关心他们。” :-) (2认同)