![通过密钥指纹使用 ssh 进行连接](https://linux22.com/image/1214986/%E9%80%9A%E8%BF%87%E5%AF%86%E9%92%A5%E6%8C%87%E7%BA%B9%E4%BD%BF%E7%94%A8%20ssh%20%E8%BF%9B%E8%A1%8C%E8%BF%9E%E6%8E%A5.png)
我在一台机器上设置了一个 SSH 服务器,不幸的是,由于 DHCP,它的 IP 地址经常更改。我使用一个小脚本解决了这个问题,该脚本遍历子网的所有地址并尝试连接到每台机器。缺点是它相当慢。
是否可以使用 ssh 命令行客户端连接到子网中的计算机仅当服务器密钥与特定密钥匹配时?
答案1
~/.ssh/known_hosts
在客户端上添加所有可能的地址和服务器的公钥。然后设置StrictHostKeyChecking
选项。SSH 将拒绝连接到与文件中的密钥不匹配的服务器known_hosts
。
答案2
这个问题的整个前提似乎都是错误的。我会尝试回答你提出的问题,而不是理论化你想要实现的目标。
显然,如果这是针对私有 IP,那么您定义的是存在于 LAN 上的东西。动态 DNS 不适用于此类用途,它只会将域置于面向外部的网络上。您可能需要在路由器上创建一个“静态域”,以解决 ISP 不断更改您的公共 IP 地址的问题。
有趣的是,您缺乏设置静态 IP 地址的能力,这是处理与更改 IP 有关的问题的最明智的方法。当路由器的 DNS 查询特定主机名时,它通常会自动报告 A 记录。我建议您在进一步冒险之前验证您的主机名是否设置正确,并且无法以上述方式连接。
MDNS 是解决此类问题的最后一个选项,也可能是唯一一个选项。请记住,其他设备必须具有多播能力并使用 MDNS 地址。设置它超出了本答案的范围,因为它特定于每个操作系统。Mac OS X 将此服务称为 Bonjour,它也适用于 Windows 并随 iTunes 一起安装。Gnu/Linux 通过 Avahi 提供 MDNS,它通常预装在最新的 GNU/Linux 发行版中。
您希望得到问题的答案,现在您得到了答案。请勾选“接受”,这样整个过程才能顺利进行。