用户(而非主机)SSH 密钥的 randomart 图像的目的是什么?

syn*_*gma 102 ssh openssh ssh-keygen

ssh-keygen产生以下输出:

The key fingerprint is:
dd:e7:25:b3:e2:5b:d9:f0:25:28:9d:50:a2:c9:44:97 user@machine
The key's randomart image is:
+--[ RSA 2048]----+
|       .o o..    |
|       o +Eo     |
|        + .      |
|         . + o   |
|        S o = * o|
|           . o @.|
|            . = o|
|           . o   |
|            o.   |
+-----------------+
Run Code Online (Sandbox Code Playgroud)

此图像的目的是什么,它是否为用户提供任何价值?请注意,这是客户端(用户)密钥,而不是主机密钥。

Tor*_*597 60

这在这个问题中有解释:https : //superuser.com/questions/22535/what-is-randomart-produced-by-ssh-keygen。它实际上对用户生成密钥没有任何用处,而是为了便于验证。亲身。你愿意看这个吗:(请注意这是一个主机密钥示例)

2048 1b:b8:c2:f4:7b:b5:44:be:fa:64:d6:eb:e6:2f:b8:fa 192.168.1.84 (RSA)
2048 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48 gist.github.com,207.97.227.243 (RSA)
2048 a2:95:9a:aa:0a:3e:17:f4:ac:96:5b:13:3b:c8:0a:7c 192.168.2.17 (RSA)
2048 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48 github.com,207.97.227.239 (RSA)
Run Code Online (Sandbox Code Playgroud)

其中,作为一个人,你需要更长的时间来验证,或者这个:

2048 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48 gist.github.com,207.97.227.243 (RSA)
+--[ RSA 2048]----+
|        .        |
|       + .       |
|      . B .      |
|     o * +       |
|    X * S        |
|   + O o . .     |
|    .   E . o    |
|       . . o     |
|        . .      |
+-----------------+
2048 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48 github.com,207.97.227.239 (RSA)
+--[ RSA 2048]----+
|        .        |
|       + .       |
|      . B .      |
|     o * +       |
|    X * S        |
|   + O o . .     |
|    .   E . o    |
|       . . o     |
|        . .      |
+-----------------+
Run Code Online (Sandbox Code Playgroud)

示例来自http://sanscourier.com/blog/2011/08/31/what-the-what-are-ssh-fingerprint-randomarts-and-why-should-i-care/

本质上,由用户密钥生成的随机艺术也可以以同样的方式使用。如果最初生成的图像与密钥的当前图像不同,例如,如果您移动了密钥,则该密钥可能已被篡改、损坏或替换。

这,从另一个问题是一个非常好的阅读:http : //users.ece.cmu.edu/~adrian/projects/validation/validation.pdf

  • 恐怕我不同意,问题是:这张图片的目的是什么,它是否为用户提供了任何价值?我回答说,本质上它对生成所述密钥的用户没有任何价值。如果我遗漏了某些内容,或者您​​希望我添加其他示例等,请告诉我。我是新来的。 (8认同)
  • 我以主机密钥为例,基本原理已经有了,不过我会补充一个用户密钥的例子。感谢您的投入,帕特里克。 (3认同)

phe*_*mer 14

主机密钥和用户密钥之间的区别似乎有很多混淆。

主机密钥用于为您建立远程主机的身份。
用户密钥用于为远程主机建立您自己的身份。
由于这些键通常仅显示为字符序列,因此人们很难一眼就看出它们是否已更改。这就是随机艺术的目的。密钥的微小偏差将导致随机艺术图像显着不同。

至于您为什么会关心,验证远程主机的身份很重要,因为有人可能会拦截您的流量(MITM 攻击),并查看/操作发送和接收的所有内容。

不过,验证自己并不重要。你不需要确认“是的,我就是我”。即使您的用户密钥以某种方式发生了变化,远程服务器也会让您进入,或者不会。您的连接不会有更高的窃听风险。

 

那么为什么ssh-keygen在生成用户密钥时会显示 randomart 图像呢?
因为当 randomart 代码被引入ssh-keygen [grunk@cvs.openbsd.org 2008/06/11 21:01:35] 时,主机密钥和用户密钥的生成方式完全相同。额外的信息输出可能对用户密钥没有任何用处,但它不会造成伤害(除了可能导致混淆)。

现在,当我说“什么时候引入 randomart 代码时”,这是因为代码已经改变了。如今,大多数发行版都使用ssh-keygen -A生成主机密钥,这是一项新功能。此功能会生成多种不同类型的密钥(rsa、dsa、ecdsa),并且不显示随机图像。旧方法仍可用于生成主机密钥,但通常不是。所以现在旧方法只用于用户密钥,但 randomart 功能仍然存在。