我正在创建一个操作系统安装后配置脚本。安装后,重新安装的机器有一个默认的静态IP,我可以在机器启动时连接到。我希望能够在机器上执行一个脚本来ssh
更改我连接到机器的接口的默认静态 IP。一旦我改变IP/etc/sysconfig/network-scripts/ifcfg-<接口>脚本,我运行ifdown <interface> && ifup <interface>
以使更改生效,但是,这会断开我的 ssh 连接,因为接口上的 IP 现在不同(ifdown && ifup
如果远程计算机的 IP 保持不变,似乎不会断开 ssh 连接)。有没有办法在重启接口和更改IP时不丢失ssh连接?
答案1
SSH 构建在 TCP/IP 之上。这是一种有状态协议,连接一端的 {IP 地址_客户端,端口_客户端} 和另一端的 {IP 地址_服务器,端口_服务器}。您需要所有四个值才能保持建立的连接。
(NAT 网关透明地更改连接的一个或多个这些值,并记住替换为返回流量的原始值。)
您询问是否可以更改 IP 地址。这是四个必需值之一,因此如果执行此操作,连接将无法保持活动状态。
根据您的要求,您可以避免在系统重新启动之前重置 IP 地址,而是添加一个临时的附加 IP 地址,以允许新 IP 地址上的新连接,同时保留控制通道的原始 IP 地址。
ip addr add 10.10.10.10/24 dev ens99
进一步思考,如果您以交互方式执行此操作,则可能会使用screen
shell 会话与 ssh 传输隔离。