每当我从计算机连接到新的 SSH 服务器时,都会收到以下消息:
The authenticity of host '[censored]:censored ([0.0.0.0]:censored)' can't be established.
RSA key fingerprint is SHA256:censored.
Are you sure you want to continue connecting (yes/no)?
Run Code Online (Sandbox Code Playgroud)
为什么 SSH 会问我这个问题?
我有连接到随机 SSH 服务器的风险吗?
或者这只是为了确保您连接的服务器没有被黑客入侵?
Att*_*tie 29
它询问您是因为它以前从未连接到该主机。
如果您处于安全环境中,那么您将知道远程主机的指纹,并将在第一次连接时进行比较 - 如果指纹与您知道的匹配,那就太好了。如果您处于一个不太安全的环境中,那么您可以在第一次连接时接受它。
一旦您说“是的,我信任该主机密钥,并希望它与该主机名/IP 相关联”,SSH 客户端将为您记住这一点...如果出于某种原因(重新安装/新主机密钥/新中间的机器/人)密钥在后续连接中不匹配,您将看到如下警告:
$ ssh baloo
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ 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 ECDSA key sent by the remote host is
SHA256:Su0uy/4BcRcpmyLfxO9ndlcda52F8uct6yWNp7Sa92M.
Please contact your system administrator.
Add correct host key in /home/attie/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /home/attie/.ssh/known_hosts:65
remove with:
ssh-keygen -f "/home/attie/.ssh/known_hosts" -R baloo
ECDSA host key for baloo has changed and you have requested strict checking.
Host key verification failed.
Run Code Online (Sandbox Code Playgroud)
在这种情况下,如果您知道远程主机确实已更改,那么您可以继续……可能会验证指纹是否正确。
如果您不确定,或者知道远程主机不应该改变,那么它会提示您潜在的攻击。
当您收到此消息时,SSH 只是在说“我以前从未见过这台计算机,所以我无法确定它所说的是谁。您相信它吗?” 在这一点上,您可以说您信任它,并且将来您的计算机会记住并且不再询问您。
理想情况下,要信任它,您应该手动将提供的密钥与服务器上的密钥进行比较(就像通过检查您认为属于它的人是否可以实际生成公钥来信任 GPG 密钥一样)。尽管实际上人们不会为此烦恼(至少据我所知)。
真正的好处来自您每次连接到服务器的后续时间。如果 SSH 抱怨您已经信任的服务器不是同一台服务器,那么您就有可能成为 MiTM 攻击的受害者。
总而言之,如果您在一个网络上,您确信没有中间人攻击正在进行,并且这是您第一次连接到计算机,那么您应该可以安全地接受密钥。(尽管如果您正在执行某些绝密的政府任务,那么在连接之前可能会要求您的系统管理员验证指纹)