因为你告诉它连接是安全的
当您第一次连接到 SSH 服务器时,您会收到以下消息:
The authenticity of host '<host> (<IP Address>)' can't be established.
<algorithm> key fingerprint is <hash>.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])?
当您键入 时yes
,您会被告知:Warning: Permanently added '<host>' (<algorithm>) to the list of known hosts.
在这里,您已将此连接标记为安全,并且您相信您正在连接到实际机器。重新连接时,如果服务器提供相同的密钥,则不会显示任何警告。如果您是第一次连接到 MITM 服务器,您会收到同样的消息——您的计算机没有任何神奇的方法可以检测任何给定的 SSH 服务器是否是您认为的那个服务器。如果您没有花时间在单独的通道上手动检查机器的指纹,您将盲目相信它并且不会更聪明。
但是,如果您要重新连接到服务器并且有人拦截了您的连接,您会得到:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the <algorithm> key sent by the remote host is
<hash>.
Please contact your system administrator.
Add correct host key in /home/<username>/.ssh/known_hosts to get rid of this message.
Offending RSA key in /home/<username>/.ssh/known_hosts:<line number>
Host key for <host> has changed and you have requested strict checking.
Host key verification failed.
在这里,您可以非常明确地看到它正在警告您这种确切的攻击——它在第 3 行明确表示“中间人攻击”,并且不允许您连接。
大局是,如果您从未验证与您交谈的人是您认为的人,那么加密通信就无关紧要。SSH 甚至让你明确告诉它你确定。要验证它,您应该ssh-keyscan <host>
在受信任的计算机上运行——例如,直接插入其中的计算机,或者更好的是,ssh-keyscan localhost
在目标计算机本身上运行。然后,fingerprint
在提示符处键入并粘贴其输出,或手动验证它,然后才键入yes
.