设想:
- 在我的办公桌前,笔记本电脑连接到以太网并通过 SSH 连接到远程服务器
- 想带着笔记本电脑搬到办公室的另一边,在不中断 SSH 连接的情况下切换到 WiFi
我已经尝试过:先连接到 WiFi,然后断开以太网;并先断开以太网,然后再连接到 WiFi。这两种方法都不起作用。在使用 Ubuntu 和 OS X 服务器以及两个操作系统选项以及客户端时也尝试过。没运气。
似乎我需要某种方式来告诉我的 SSH 连接它应该开始使用新连接的网络接口而不是旧的断开连接的接口。有任何想法吗?
我意识到我可以整天只用 WiFi,但我不想那样做。我还意识到我可以在远程服务器上的屏幕会话中工作,然后在更改界面后重新连接到该屏幕会话,但我也不想这样做。例如,我可能正在通过 SSH 传输一些大命令,例如数据库转储,或者我可能通过 SSHFS 打开文件,或者我可能只是想避免重新连接的麻烦
我怀疑此解决方案不适用于 SSHFS 等,但您可以看看Mosh,它至少为 shell 本身提供漫游支持。
根据定义,恐怕你不能这样做。SSH 会话在 TCP 连接上运行,TCP 连接由四元组(源地址、源端口、目标地址、目标端口)定义。您不能将现有连接转移到客户端上的不同地址(除了当接口关闭时操作系统将断开连接这一事实)。
NAT 可能会使这幅图复杂化,但不会以任何方式帮助您。
老线程,我知道,但为了完整起见,因为我一直在寻找同样的东西......
在 Windows 7 或更高版本中,您应该能够同时选择您的 wifi 适配器和以太网适配器,然后选择“桥接”。这将为您提供一个用于两者的单一 IP 地址,您现在可以随意断开和重新连接以太网(假设有连续的 wifi 覆盖)。
我通过两种方式管理它:
从数据中心 (RDP/Windows/etc) 中的终端服务器启动会话
或者
安装 GNU screen或tmux并在登录后启动它们。
我更喜欢
tmux
因为screen
它很老派,但如果你只被允许安装支持的包,screen
它在 RHEL 仓库中。或者
两者都做。
问题可能是当您在有线和 wifi 之间切换时,您的源 IP 地址发生了变化。这将防止 ssh 会话返回。
我在 linux 中通过 vpn 连接并确保 vpn 连接始终为您的帐户提供相同的 ip(不难执行,但很有可能默认情况下您已经通过 vpn 收到相同的 ip 如果它是可用,但最好强制执行以确保)。我主要使用 vtun,但 openvpn 也可以。确保您的连接通过 vpn(正确的路由、推送的前缀……)
我已经能够通过电缆离线长达 5 分钟,然后连接到 wifi,并且仍然能够与我的所有 ssh 会话保持连接。正在进行的 ping、mtr、htop、...只是在 vpn 恢复时继续,就好像什么也没发生一样。
您可以绑定Ethernat 和 Wifi 连接。
这就是我在 RHEL 上的做法:
这应该允许您在 Wifi 和以太网连接之间漫游,并保持当前的 SSH、VPN 等会话连接。
致谢:https ://fedoramagazine.org/bond-wifi-and-ethernet-for-easier-networking-mobility/
这不容易做到。
我可以向您指出一些非常昂贵的应用程序,它们允许您在 IP 或 AP 之间移动时保持 telnet 或 SSH 会话,甚至在长时间的网络断开连接期间,但它们基本上是通过创建一个始终打开的服务器来实现的客户端机器的端会话,因此服务器不知道连接不同或已断开。
我想你可以编写这样的代码,但我想如果这很容易做到,我的客户就不会因为在无线手持扫描仪上保持终端连接打开而被强奸 5 位数的费用。
不过,我确实偶然发现了屏幕,它声称可以创建持久的 SSH 会话,这实际上可能有效……试一试。
首次启动 ssh 会话时,请尝试仅使用 wifi。然后插入以太网。这应该允许新连接通过以太网,但已建立的连接将保留在 wifi 上。至少我已经看到它在 OSX 上是这样工作的,所以操作系统/硬件可能会有所不同。
我很确定您可以通过 VM 和隧道进行一些愚蠢的黑客攻击来做到这一点。
这是未经测试的,但如果它确实有效,请告诉我。
ssh -L 10022:remote.server.example.com:22
ssh 192.168.56.3 -p 10022
让我知道它是否有效。