如果我尝试这个
ssh jh@jh-System-Product-Name
工作正常。
Welcome to Ubuntu 16.04.3 LTS (GNU/Linux 4.10.0-40-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
另一方面
ssh localhost
The authenticity of host 'localhost (127.0.0.1)' can't be established.
ECDSA key fingerprint is SHA256:gsLR5X+7Im1MdPch7u8Jlvm0ql6PH0rDBsWnpOpizd4.
Are you sure you want to continue connecting (yes/no)? no
这是什么意思?
答案1
简答
这意味着要么/要么:
- 您从未通过 . 连接到本地系统
ssh
。 - 您的系统上已生成新的主机密钥。
更长的答案以包含评论中的信息
SSH是一个首次使用时信任 (TOFU)系统。这意味着连接系统有一个它将始终信任的已知主机列表。如果建立了先前未知的远程连接,则会显示远程系统的主机密钥以供连接用户检查并接受或拒绝。如果新主机被接受,该主机密钥将被添加到始终受信任的已知主机的本地列表中。
这是 SSH 最容易受到攻击的地方。 域名系统大多数域的查找都是不安全的,除非DNSSEC已部署。因此,攻击者有可能欺骗 DNS,使其看起来像远程系统。在这种情况下,主机密钥将不匹配,但许多用户无论如何也懒得检查主机密钥。因此,如果使用带有密码身份验证的 SSH,如果主机密钥不正确且连接用户懒得检查,则远程攻击者可以通过中间人 (MITM) 方式建立 SSH 连接并拦截您的用户名和密码。
有一个名为 的缓解 DNS 记录sshfp
,它代表 SSH Fingerprint。这sshfp
记录由域所有者在 DNS 区域文件中输入。连接到域的系统会检查sshfp
记录。如果找到记录,则验证指纹。这可以防止连接系统连接到 TOFU 信任模型中不正确的远程主机。但是,许多(也许是大多数)DNS 提供商不支持sshfp
记录类型。因此,大多数ssh
连接都没有针对 DNS 欺骗的保护。
因此,在连接到您之前连接过但显示新主机密钥的远程系统时,请务必小心。您的担忧回应是好的。但是,在这种情况下,很可能是没有根据的。