我在工作电脑上运行 Ubuntu,我的工作地点为我提供了一个静态 IP 地址,但没有域名。有时通过 ssh 连接到该电脑对我来说很有用,但这并不常见,我无法立即记住 IP 号码。因此,我设置了一个 dyndns 帐户,并将一个简短且直观的域名与该 IP 关联。
这是我的问题,当我尝试 ssh 到域时,它会询问我
$ ssh [email protected]
The authenticity of host 'something.there.foo (xx.xx.xx.xx)' can't be established.
RSA key fingerprint is 'ALPHANUMERIC STRING'
Are you sure you want to continue connecting (yes/no)?
这让我有点吃惊。我已经通过直接连接到 IP 地址注册了 RSA 指纹。我以为域名只是一种方便的指引我正确方向的方法(即 IP 地址),但那条消息让我以为我的数据实际上正在通过他们的服务器或类似的东西。
是哪一个?我是通过其他人的服务器发送密码吗?还是 ssh 真的非常小心,因此即使最终目的地是已知主机也会警告我?
我使用的 ssh 服务器是 openssh-server 包。
答案1
ssh 再次询问;仅仅因为您连接到主机并不意味着您相信该主机是真正的 something.there.foo。
您可以比较指纹来检查它们确实属于同一主机:
diff -u <(ssh-keygen -F something.there.foo -l) <(ssh-keygen -F xx.xx.xx.xx -l)
有方法可以将密钥指纹放入 DNS,但如果没有 DNSSEC,安全性就不会有太大提高。
一旦您连接到主机,您就可以相信 ssh 会在它发生变化时警告您。
答案2
如果您没有通过 something.there.foo 访问服务器,它会询问您是否已经通过其他方法(IP 地址或备用域)访问过同一台服务器。
答案3
您没有通过他们的服务器发送。出现警报的原因是域/ip 不是 DNS 可逆的。这意味着当您 DNS IP 时,它不会显示为 something.there.foo。