server1 有一个私有 IP 和一个公共 IP。server2 有一个私有 IP 和一个公共 IP。
一般来说,如果 server1 通过 ssh 连接到 server2,server2 会通过其公共 IP 识别 server1。
但因为两台服务器都属于同一家公司,所以我想他们已经将其配置为在 ssh 连接彼此时使用“私有 IP”。
我从 server2 连接到 server1,然后检查我的 IP 是什么(server2),我注意到它不是 server2 的公共 IP,而是 server2 的私有 IP。
我想禁用这个功能..我希望服务器只通过它们的公共 IP 进行通信..
如何缓解这个问题?
答案1
连接到其他服务器时应指定公网IP地址。
如果您的服务器配置如下:
Server1: 192.168.0.1 (private), 12.34.56.1 (public)
Server2: 192.168.0.2 (private), 12.34.56.2 (public)
您应该使用以下方式从 server1 连接到 server2
ssh 12.34.56.2
这将确保连接使用公共网络进行。
如果您想要通过名称 () 引用服务器ssh server2
,并且希望名称自动映射到服务器的公共 IP 地址,则应在hosts
两个服务器的文件中添加条目,告诉它们它们的名称将映射到它们的公共 IP:
12.34.56.1 Server1
12.34.56.2 Server2
答案2
如果您确实想确保只通过公共接口进行通信,那么请让 ssh 服务器只监听公共接口上的连接。假设您使用 openssh 或某些变体,请打开您的 /etc/ssh/sshd_config(这是它的常用路径)并添加:
ListenAddress <your.public.ip.address>
如果你有如下几行:
ListenAddress ::
ListenAddress 0.0.0.0
将它们注释掉(您可能已经将它们注释掉,因为我相信所有接口都是默认的)
然后按照上述 Massimo 的建议使用正确的 IP 地址和/或主机条目。