/etc/ssh/ssh_config
有ssh_visual host key no
选项。它起什么作用?
编辑:确实,是视觉,不是虚拟。但它控制的是什么?
答案1
首先,考虑一下/etc/ssh/ssh_config
SSH客户系统范围的配置。这意味着,任何时候您ssh
从计算机访问远程服务器,此配置都会发挥作用。
默认情况下,当您首次连接到服务器时,系统会要求您说明远程服务器的 SSH 指纹是否“符合要求”,以便您可以验证服务器是否真正合法(服务器管理员可以告诉您服务器的指纹是什么,然后您可以根据他们告诉您的内容验证您在 SSH 客户端中看到的内容)。大多数最终用户不会逐个字符地亲自验证指纹。
但是,密钥生成中还有一个额外的组件,默认情况下 SSH 指纹验证中不会出现这个组件。它被称为“随机图”,每个密钥/指纹都应该有一个唯一的随机图。
考虑一下我刚刚生成的这把钥匙,当然是一把“假”钥匙,放在仿生容器里。它向我们展示了一幅随机艺术和指纹:
The key fingerprint is:
SHA256:xtaA8biLm/Jktn9A/j2sty686uosrRtz0GQIFw6nP2s root@bionic
The key's randomart image is:
+---[RSA 4096]----+
|o +. . |
| B . = |
|. o o o o |
| . + .o o |
| + .o. S . |
| + .o+ |
| E.* .+ o |
| .oO.+ = = |
| oBO++oo*oo |
+----[SHA256]-----+
主机密钥的视觉图像背后的想法最终用户可能不是会逐个字符地验证指纹,并且只会依赖前几个和后几个字符作为“略读”指纹。事实上,正因为如此,威胁行为者可能会尝试通过生成与指纹中的前几个和后几个字符相匹配的密钥来“冒充”,以“欺骗”人们,因为他们不太可能进行逐个字符的指纹验证。
这就是随机艺术作品发挥作用的地方——不同的钥匙,即使它们具有相同的“第一”位和“最后”位,也会为不同的钥匙产生不同的随机艺术,标准用户将能够发现这是一个实质性的差异(除非他们逐个字符地进行指纹识别/比较,否则不会在钥匙本身上发现这种差异)
默认情况下,SSH 客户端会不是显示远程密钥的随机数(VisualHostKey no
默认设置)。但是,如果您在配置文件中设置VisualHostKey
并yes
取消注释该行,则系统还会显示远程密钥的随机数,以帮助用户“验证”服务器指纹是否有效。
VisualHostKey
首先,一个没有设置为的示例on
:
$ ssh -p 22 [email protected]
The authenticity of host '10.73.250.210 (10.73.250.210)' can't be established.
ECDSA key fingerprint is SHA256:ZDA6BYWGmr0ftUqQxCu1CsaonKqKKUM3fbMzKUlMorE.
Are you sure you want to continue connecting (yes/no)?
现在出现相同的提示,但显示随机艺术(VisualHostKey yes
):
$ ssh -p 22 [email protected]
The authenticity of host '10.73.250.210 (10.73.250.210)' can't be established.
ECDSA key fingerprint is SHA256:ZDA6BYWGmr0ftUqQxCu1CsaonKqKKUM3fbMzKUlMorE.
+---[ECDSA 256]---+
| . ..+= |
| = oo o |
|o* =o o |
|*+*. o.o |
|=o=o=. .S |
|oE.oo+.o |
|o .oooo + |
|=. oo = |
|O. . o |
+----[SHA256]-----+
Are you sure you want to continue connecting (yes/no)?
确定服务器的随机性是否“有效”比确定指纹的文本表示要容易得多,不是吗?
(请注意,这是手册页中关于该配置选项的“长”描述,并且通过直观的示例等可能比枯燥的手册页解释更容易理解)
答案2
VisualHostKey
If this flag is set to yes, an ASCII art representation of the remote host key fingerprint is printed in addition to the fingerprint string at login and for unknown host keys. If this flag is set to no (the default), no finger‐print strings are printed at login and only the fingerprint string will be printed for unknown host keys.