切换网络接口连接时保持 ssh 连接处于活动状态并持久

切换网络接口连接时保持 ssh 连接处于活动状态并持久

设想:

  1. 在我的办公桌上,笔记本电脑插入以太网并通过 SSH 连接到远程服务器
  2. 想要带着笔记本电脑移动到办公室的另一边并切换到 WiFi,而不中断 SSH 连接

我试过:先连接 WiFi,然后断开以太网;也试过先断开以太网,然后连接 WiFi。两种方法都行不通。在使用 Ubuntu 和 OS X 服务器以及客户端的两个操作系统选项时也试过。没有成功。

似乎我需要某种方式来告诉我的 SSH 连接,它应该开始使用新连接的网络接口,而不是旧的断开连接的接口。有什么想法吗?

我知道我可以整天都使用 WiFi,但我不想这样做。我还知道我可以在远程服务器上的屏幕会话中工作,然后在更改接口后重新连接到该屏幕会话,但我也不想这样做。例如,我可能正在通过 SSH 管道传输一些大命令,例如数据库转储,或者我可能通过 SSHFS 打开文件,或者我可能只是想避免重新连接的麻烦

答案1

我怀疑这个解决方案不适用于 SSHFS 等,但你可以看看莫什它至少为 shell 本身提供漫游支持。

答案2

按照定义,恐怕您无法做到这一点。SSH 会话通过 TCP 连接运行,该连接由四元组(源地址、源端口、目标地址、目标端口)定义。您无法将现有连接转移到客户端上的其他地址(除非操作系统会在接口关闭时断开连接)。

NAT 可能会让这种情况变得复杂,但不会以任何方式帮助您。

答案3

我知道这是老话题,但是为了完整性,因为我在寻找同样的东西......

在 Windows 7 或更新版本中,您只需选择 wifi 适配器和以太网适配器,然后选择“桥接连接”即可。这将为两者提供单个 IP 地址,现在您可以随意断开和重新连接以太网(前提是 wifi 覆盖连续)。

答案4

你可以纽带Ethernat 和 Wifi 连接。

这是我在 RHEL 上执行的操作:

# Run as sudo:
$ sudo -i

$ modprobe bonding

# To enable after reboot, add " bonding " to:
$ vi /etc/modules-load.d/bonding.conf

# Get your network interfaces IDs
$ nmcli device status | grep -E "wifi|eth"
  # enp0s31f6   ethernet  connected  
  # wlp58s0     wifi      connected  

# Add new connections
$ nmcli connection add type bond ifname bond0 con-name My-Connections-Bond
$ nmcli connection add type ethernet ifname enp0s31f6 master My-Connections-Bond con-name My-Eth-Connection
$ nmcli connection add type wifi ifname wlp58s0 master My-Connections-Bond ssid My-SSID con-name My-Wifi-Connection
  
# Add your Wifi credentials
$ nmcli connection modify My-Wifi-Connection wifi-sec.key-mgmt wpa-psk

$ nmcli connection edit My-Wifi-Connection

    nmcli> set wifi-sec.psk YOUR-PASSWORD  
    nmcli> save
    nmcli> quit

# Enable the connections
$ nmcli connection up My-Connections-Bond
$ nmcli connection up My-Eth-Connection
$ nmcli connection up My-Wifi-Connection
  

这应该允许您在 Wifi 和以太网连接之间漫游,并保持当前的 SSH、VPN 等会话连接。

致谢:https://fedoramagazine.org/bond-wifi-and-ethernet-for-easier-networking-mobility/

相关内容