如何让 SSH 监听新 IP 而无需重新启动机器?

如何让 SSH 监听新 IP 而无需重新启动机器?

我在 ESX 上设置了几个 Ubuntu 服务器,我通过 SSH 更改了 IP 地址。更改后,它就让我脱离了 SSH(正如预期的那样)。

重新启动后,它 100% 按照预期运行,并且我可以在新 IP 上进行 SSH 登录。

但是,尽管这很有效并且我知道这是一个解决方案,但我正在尝试学习 Linux,并且希望在不重新启动的情况下重新启动/将 SSH 绑定到新 IP。

我已尝试过/etc/init.d/ssh restartstop然后start),和services ssh restartstop然后start),但是,似乎没有任何效果。

然而,奇怪的是,从我的另一台服务器(在同一个 ESX 机箱上运行)我可以通过 SSH 登录到新 IP,但是,在重新启动机箱之前,我似乎无法从任何其他地方通过 SSH 登录。

我不知道我做错了什么。

有人见过这个吗或者他们可以提供任何建议吗?

(如果它改变了任何东西,我移动的 IP 都是互联网/公共直接路由 IP)

答案1

我猜想这与 ARP 有关,ARP 有时会对虚拟机造成影响。您可以从同一台机器上的另一台虚拟服务器进行连接,因为您无需通过交换机。

为了测试这一点,首先尝试清除您尝试(但失败)连接的机器上的 ARP 表:

sudo arp -d <ip-of-failing-virtual-machine>

如果这没有帮助,请尝试重置交换机上的 ARP 表(一种简单的方法:重置交换机:)

答案2

当您更改 IP 地址时,您是否添加了默认路由?在我看来,由于您没有添加默认路由,计算机无法访问外部,也无法从外部访问。假设您以 root 身份更改了 IP 地址:

ip addr del <old ip/netmask> iface
ip addr add <new ip/netmask> iface

完成此操作后,您需要添加默认路由,如果不添加,您的服务器将无法连接到互联网。要让外部可以访问,需要添加默认路由:

route add default gw <gateway ip address>

希望这能解决问题。

答案3

如果 openssh-server 的配置未变(默认),那么您甚至不需要重新启动 ssh 即可让其监听您设置的新 IP。

您的问题很可能出在您更改 IP 的方式上。

我不知道你是怎么做到的,所以我会介绍所有的情况

我建议你不要使用 GUI:网络管理器。它的功能很差,不能满足你远程更改的需求。(任何图形界面在服务器上都是一个坏主意,因为它会增加你的潜在风险,并在 5 分钟的使用时间内不断消耗资源)

我的建议是编辑 /etc/network/interface

请参阅此帮助:Ubuntu 11.10 上的网络配置最重要的是“IP 寻址”部分。

请确保不要使用可能给你带来麻烦的热插拔语句。

使用 ifconfig 更改 IP 不是一个好主意:它是临时的,并且会直接进行更改,因此您无法设置/取消设置其他网络设置

现在真正的诀窍是:

(除了 ifconfig):对于 Ubuntu 来说,更改 SSH 会话的相同 IP 的操作实际上是两个过程:停止接口,然后启动接口。

因此,您使用的是一个脚本,当界面停止时,您的 ssh 会话也会关闭……您的脚本也是如此。因此,您的界面永远不会再次启动。

为了避免你的脚本被关闭你必须在后台运行脚本:

sudo -i
nohup service networking restart &

它会将您的脚本发送到后台,因此当您的 ssh 会话关闭时它也不会被关闭。

然后您将丢失 ssh 会话,但您将能够再次连接到您的服务器而无需重新启动。(如果您正在定义新的 dhcp ip 或它是 wifi,请留出一点时间)

如果这对您不起作用,请向我们提供有关如何继续的更多详细信息。

此致。

答案4

检查 /etc/ssh 中的 sshd_config

并检查配置中是否有监听地址,例如:

监听地址 212.72.224.8

如果是的话,请更改正确的地址并执行服务 ssh 重启

相关内容