![ssh 配置中的 IP 地址和服务器的主机名不同](https://linux22.com/image/692108/ssh%20%E9%85%8D%E7%BD%AE%E4%B8%AD%E7%9A%84%20IP%20%E5%9C%B0%E5%9D%80%E5%92%8C%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%9A%84%E4%B8%BB%E6%9C%BA%E5%90%8D%E4%B8%8D%E5%90%8C.png)
抱歉,我对网络还很陌生,但我的问题如下。我有一个 SSH 配置用于连接到如下所示的服务器:
Host dev
User me
Hostname IP_ADDRESS
当我连接到服务器并运行命令时:
hostname -I
我得到的 IP 地址与 IP_ADDRESS 不同。这怎么可能?为什么?提前谢谢您。
答案1
这可能有很多原因,但我认为就你的情况而言。那是因为你是通过公司的公共 IP 访问的
假设你在家。以下是你的网络连接模式
[您的计算机]--->--[您的路由器]--->--[互联网]--->--[您的公司防火墙]--->--[您的公司服务器]
你的计算机在你的私有网络上可能有一个 IP 链接 192.168.0.X
您的路由器有 2 个 IP - 192.168.0.Y(用于与您的家庭网络通信) - xxx.xxx.xxx.xxx(固定或动态的公共 IP 地址,用于与世界其他地方进行通信)
您的公司防火墙/路由器也有近 2 个 IP(可能更多) - yyy.yyy.yyy.yyy(一个公共 IP 地址,可能固定用于与世界其他地方进行通信) - 10.0.0.1(或类似的,用于在您公司的本地网络上进行通信)
并且服务器几乎在同一范围内有 1 个 IP - 10.0.0.2(我们假设是那样)
管理员可能做的是 NAT。这是一条规则,告诉防火墙,防火墙公共 IP 上定义端口上的每个连接都必须转发到服务器。
因此,让我们假设防火墙的公共 IP 是 110.12.23.34,并且端口 8022 转发到其端口 22 上的服务器。您的服务器的 IP 是 10.0.0.2
如果你连接到 110.12.23.34:8022,你实际上与服务器进行通信,就像你在本地连接到 10.0.0.2:22 一样
因此,一旦在您的服务器上,当您创建 hostname -I 时,它会返回其自身地址。