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


95

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.   |
+-----------------+

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




2
重新开放,因为几个常客喜欢这个问题,并认为这将是该网站的一个不错的补充。
slm

2
我认为这是一个好问题。尽管上面的链接很有趣,但它们都没有解决所问的问题。这两个链接都谈到了randomart对于主机密钥的有用性,而不是为什么对用户密钥显示了randomart。
帕特里克

1
仅供参考,前几天我将此问题发送到了OpenSSH邮件列表。到目前为止,。list.mindrot.org/pipermail/openssh-unix-dev/2014-July/…–
Patrick

Answers:


55

在以下问题中对此进行了解释: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)

作为人类,这需要您花费较长时间进行验证,或者这样:

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     |
|        . .      |
+-----------------+

示例摘自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


1
这不能回答问题。您提供的信息与主机密钥有关。问题是询问用户密钥。
帕特里克

8
恐怕我不同意,问题是:此图像的目的是什么,它为用户提供任何价值吗?我回答说,从本质上讲,它对于生成所述密钥的用户没有任何价值。如果我错过了什么,或者您想添加其他示例,等等,请告诉我。我是新来的。
Torger597 2014年

1
我同意,这是关于用户密钥而不是主机密钥的问题。
帕特里克

3
我以主机密钥为例,因为这里有基本原理,尽管我将组成并添加一个用户密钥示例。谢谢您的投入,帕特里克。
Torger597

13

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

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

至于您为什么要关心,验证远程主机的身份很重要,因为有人可能会拦截您的流量(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图像。旧方法仍然可以用于生成主机密钥,但通常不是。因此,现在旧方法仅用于用户密钥,但randomart功能仍然保留。


您无需确认“是的,我是我”。是的,尽管说“是的,我看起来像我”会更精确一些。如果碰巧有很多键,则可能需要更多反馈,以确保使用正确的键。
Alois Mahdal

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.