ssh-keygen生产的randomart是什么?


352

生成密钥时,会从较新版本的OpenSSH中获得“ randomart”。我无法找到原因以及为什么要使用它的解释。

Generating public/private rsa key pair.
The key fingerprint is:
05:1e:1e:c1:ac:b9:d1:1c:6a:60:ce:0f:77:6c:78:47 you@i
The key's randomart image is:
+--[ RSA 2048]----+
|       o=.       |
|    o  o++E      |
|   + . Ooo.      |
|    + O B..      |
|     = *S.       |
|      o          |
|                 |
|                 |
|                 |
+-----------------+

Generating public/private dsa key pair.
The key fingerprint is:
b6:dd:b7:1f:bc:25:31:d3:12:f4:92:1c:0b:93:5f:4b you@i
The key's randomart image is:
+--[ DSA 1024]----+
|            o.o  |
|            .= E.|
|             .B.o|
|              .= |
|        S     = .|
|       . o .  .= |
|        . . . oo.|
|             . o+|
|              .o.|
+-----------------+

5
我想问的另一个问题是:与他人分享您的randomart图像是否安全?换句话说,给定诸如上述的randomart图像,是否可以将其反向工程回密钥?
AndyJ0076

Answers:


259

随机艺术旨在使人类更轻松地验证密钥。

验证通常是通过比较无意义的字符串(即密钥指纹的十六进制表示形式)来完成的,人类比较起来很慢且不准确。Randomart用结构化的图像代替了它,该结构化的图像可以更快,更容易比较。

这篇论文“哈希可视化:一种改善现实世界安全性的新技术”,Perrig A.和Song D.,1999年,国际加密技术和电子商务研讨会(CrypTEC '99),介绍了一些技术和优点。


66
如果您只能解释为什么人们会验证密钥,那将会有所帮助,因为坦率地说,我倾向于将我的公共密钥放在我的authorized_keys文件中并完成它。
dlamblin

43
@dlamblin:您通常不会以此来验证自己的密钥。但是,这对于验证远程计算机的主机密钥很有用。一个想法是,如果您从不同位置登录到特定计算机(或者不将其密钥保存到known_hosts文件中),则将能够识别主机密钥的“艺术性”。如果这种方式突然改变了,您应该警惕输入密码,因为这可能意味着您的连接正在进行中间人攻击(或者可能意味着主机刚刚为其他密码更改了密钥)原因)。
克里斯·约翰森,2009年

29
嗯,什么时候可以看到主持人的艺术品?(我想我从未做过。)在生成密钥对之后,我才看到这样的图像。我将不得不与之进行比较以识别“突然的”变化。
DerMike

12
我敢打赌,randomart遵循与完整性检查哈希类似的原理,即:输入中的微小差异会产生完全不同的输出。那意味着您将只需要记住预期的随机艺术的粗略形状就可以注意到有些不对劲。当然,当SSH等未向您显示要连接的主机的随机方式时,这实际上是行不通的(即使知道主机也应这样做)。
艾伦·李

2
我想这些在复制完成后亲自进行公钥完整性检查时最有用。
jordanpg 2014年

198

-o VisualHostKey=yes 

到您的命令行,或放

VisualHostKey=yes 

在你的~/.ssh/config

您会看到要登录的框的随机图。如果您登录某一天并且随机艺术有所不同(您的大脑应该快走!我不知道!),则可能有人在黑客或其他原因。

这个想法是您不需要自觉地去做。我们其中一台机器的钥匙之一有点像蝴蝶。另一个有点像鸡巴(是的,我们的大脑很原始)。如果每天登录,您甚至都不会尝试使用这些图像。


9
不是很好。如果您以前登录过,那么计算机使用存储的指纹为您进行识别会更好。该功能仅用于登录新计算机。
尼古拉斯·威尔逊

57
这个答案来得很晚,但是值得指出的是,如果您从不具有所有known_hosts的另一台计算机上登录,这将非常有用。在这种情况下,计算机将无法验证其已知信息,但是用户应该能够看到“这看起来与正常情况大不相同!” 然后中止
Xkeeper,2012年

9
让您的计算机进行识别很容易遭到您计算机已知主机的攻击。就像您不应该让您的计算机为您输入密码一样,您最好自己验证主机的密钥。
Marko Topolnik

37

官方公告:OpenSSH 5.1发布

将实验性SSH指纹ASCII可视化引入ssh(1)和ssh-keygen(1)。可视指纹显示由新的ssh_config(5)选项“ VisualHostKey”控制。目的是以可视化的形式呈现SSH主机密钥,以使其易于调用和拒绝已更改的主机密钥。该技术的灵感来自于称为“随机艺术[*]”的图形哈希可视化方案,以及丹·卡明斯基(Dan Kaminsky)在柏林23C3时的沉思。

默认情况下,默认情况下禁用“指纹可视化”功能,因为用于生成随机图片的算法仍会更改。


8
最后一句话的确值得知道。 有关OpenSSH 6.8发行状态的OpenBSD Journal @ Undeadly.org信息,“请注意,可视主机密钥也将有所不同。” 较新的软件显示的图像与较旧的软件显示的图像不同。
TOOGAM 2015年


11

生成ssh-keygen后显示的Randomart是刚刚生成的密钥的图形表示。然后:

  • 对于生成ssh密钥用户, Randomart 并不是真正有用

  • 对于使用通过SSH的连接来经常连接同一服务器的用户来说,Randomart可能非常有用:如果他在SSH命令中添加了“ -o VisualHostKey = yes”选项:

    ssh user@domainname.com -o VisualHostKey =是

将显示与服务器公钥相对应的Randomart。

要查看示例,您可以尝试:

ssh git@github.com -o VisualHostKey =是

在用户经常连接到同一服务器的情况下,则他可以快速轻松地检查他是否识别出该服务器的公钥相对应的Randomart。这比检查公钥本身的字符串更容易,更快捷!

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.