在切换networking接口连接时保持ssh连接保持活动状态并持久

场景:

  1. 在笔记本电脑上,连接到以太网并通过SSH连接到远程服务器
  2. 想要移动到笔记本电脑的办公室另一端,并改变到WiFi而不中断SSH连接

我试过了:首先连接到WiFi然后断开以太网; 并先断开以太网,然后连接到WiFi。 这两种方法都不行。 当使用Ubuntu和OS X服务器以及两个操作系统选项以及客户端时也尝试过。 没有运气。

好像我需要某种方式告诉我的SSH连接,它应该开始使用新连接的networking接口,而不是旧的断开连接的接口。 有任何想法吗?

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

我怀疑这种解决scheme不适用于SSHFS等,但你可以看看Mosh ,它至less为shell本身提供了漫游支持。

这不能轻易完成。

我可以指出一些非常昂贵的应用程序,它们允许您在IP或AP之间移动时保持telnet或SSH会话,或者甚至在长时间的networking断开期间保持telnet或SSH会话,但基本上通过创build始终打开的服务器客户机的端会话,所以服务器不知道连接的不同或丢弃。

我想你可以编码这样的事情,但我想如果这很容易做到,我的客户不会因为使用无线手持扫描器打开terminal连接而花费5位数的代价来强奸。

虽然,我在屏幕上绊倒了,声称创build持久的SSH会话 ,实际上可能工作…给它一个镜头。

按照定义,恐怕你不能这样做。 一个SSH会话通过由四元组(源地址,源端口,目标地址,目标端口)定义的TCP连接运行。 您不能将现有连接转移到客户端上的其他地址(除了在接口closures时操作系统将断开连接)。

NAT可能会使这个图片变得复杂,但不会以任何方式帮助你。

我知道,老线程,但为了完整性,因为我正在寻找同样的事情…

在Windows 7或更新版本中,您应该只需select您的WiFi适配器和以太网适配器,然后select“桥接连接”即可。 这将给你一个单一的IP地址,你现在可以断开和重新连接以太网(连续的无线networking覆盖范围)。

我通过两种方式来pipe理这个:

从数据中心的terminal服务器(RDP / Windows / etc)启动会话

要么

安装GNU 屏幕或tmux并在login后启动它们。

我更喜欢tmux因为screen相当老派,但是如果只允许安装受支持的软件包,则screen位于RHEL回购站中。

要么

做两个。

尝试仅在第一次启动ssh会话时在WiFi上。 然后插入以太网。这应该允许新的连接通过以太网,但build立的连接将保持在无线上。 至less我已经看到它与OSX一样工作,所以OS /硬件可能会有所不同。

我敢肯定你可以用虚拟机和隧道进行一些愚蠢的攻击。

这是未经testing的,但让我知道,如果它确实工作。

  1. 创build一个具有2个接口的访客虚拟机,1个桥接适配器(连接到WiFi)和1个仅主机连网
  2. 假设虚拟机的桥接适配器为妻子192.168.0.25,主机只有192.168.56.5。
  3. ssh -L 10022:remote.server.example.com:22内创buildssh连接w /到远程端口的隧道22 ssh -L 10022:remote.server.example.com:22
  4. 现在通过隧道连接。 ssh 192.168.56.3 -p 10022
  5. 当你失去wifi连接时,将虚拟机上的适配器更改为以太网适配器。
  6. 希望它没有h或拧上路由表

让我知道如果它的作品。

问题可能是当您在有线和无线之间切换时,您的源IP地址会发生变化。 这将防止ssh会话回来。

我在linux下通过连接一个vpn来处理这个问题,并确保vpn连接总是给你的帐户提供相同的ip(不难执行,但是如果是的话,你将会收到相同的ip over vpn可用,但更好地执行它是肯定的)。 我主要使用vtun,但openvpn也没关系。 确保你的连接通过VPN(正确的路由,推送前缀,…)

我已经能够从电缆离线,甚至长达5分钟,然后连接到WiFi,仍然能够保持连接到我所有的SSH会话。 正在进行的ping,mtr,htop,…只是在vpn恢复的时候继续,就好像什么也没发生一样。