在切换网络接口连接时保持ssh连接的活动性和持久性


13

场景:

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

我试过了:先连接到WiFi,然后断开以太网连接;并先断开以太网连接,然后再连接到WiFi。两种方法都行不通。在将Ubuntu和OS X服务器以及两个OS选项以及客户端一起使用时,也进行了尝试。没运气。

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

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


3
如果两种方式都获得相同的IP地址,则应该可以正常工作。如果没有,那几乎是不可能的。
艾伦·库里

@AlanCurry如果客户端和服务器都支持MPTCP,则有可能。但是MPTCP支持仍然非常有限,因此情况不太可能。
kasperd '16

Answers:


4

我怀疑该解决方案不适用于SSHFS等,但是您可以看看Mosh,它至少为外壳本身提供了漫游支持。


这看起来是一个非常好的解决方案,但是不幸的是,它也需要安装在服务器上,由于权限的限制,这并非总是可能的。
user000001 18-10-26

4

顾名思义,您恐怕无法这样做。SSH会话通过TCP连接运行,TCP连接由四元组(源地址,源端口,目标地址,目标端口)定义。您不能将现有连接转移到客户端上的其他地址(除了当接口出现故障时OS会断开连接的事实)。

NAT可能会使此情况复杂化,但不会以任何方式帮助您。


是的,但是一旦知道套接字已关闭,应用程序便可以重新连接。SSH协议是否有恢复旧会话的规定?
Ajay Brahmakshatriya

@AjayBrahmakshatriya SSH没有工具可以恢复会话
Ferrybig

2

我知道是旧线程,但是出于完整性考虑,因为我一直在寻找相同的东西...

在Windows 7或更高版本中,您应该只需选择wifi适配器和以太网适配器,然后选择“网桥连接”。这将为您同时提供两个IP地址,并且您现在可以随意断开和重新连接以太网(考虑到连续的wifi覆盖)。


好主意,我将不得不尝试一下。
Doug

如果这样做,就不能一次到两个网络,这取决于设置,它会踢到网络区域中的每个人(来源:这件事发生在我身上)
Ferrybig

2

我通过两种方式进行管理:

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

要么

安装GNU 并在登录后启动它们。

我更喜欢,tmux因为它screen是一门古老的学校,但是如果只允许您安装支持的软件包,screen则在RHEL存储库中。

要么

两者都做。


tmux真的很方便。在其中运行远程操作tmux是一种很好的习惯。
小鸡

是的我同意。多窗口功能很棒。
道格

1

这不容易做到。

我可以为您指出许多非常昂贵的应用程序,这些应用程序使您可以在IP或AP之间移动,甚至长时间断开网络连接时保持telnet或SSH会话,但是它们基本上是通过创建始终开放的服务器来实现的客户端计算机的一次会话,因此服务器不知道连接的不同或已断开。

我想您可以编写这样的东西,但是我想,如果做到这一点很容易,我的客户就不会因在无线手持扫描器上保持其终端连接打开而遭受5位数的费用。

但是,我确实在屏幕上绊了一下,声称创建了持久的SSH会话,该会话实际上可能会起作用……试一试。


1

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

我在Linux中通过连接vpn并确保vpn连接始终为您的帐户提供相同的ip来处理此问题(执行起来并不困难,但是很有可能您默认会在默认情况下通过vpn收到相同的ip可用,但最好执行一下以确保)。我主要使用vtun,但是openvpn也可以。确保您的连接通过了VPN(正确的路由,推送的前缀等)

我已经能够从电缆脱机长达5分钟,然后再连接到wifi,仍然可以保持与所有ssh会话的连接。进行中的ping,mtr,htop等...恢复VPN时就继续,好像什么也没发生。


0

首次启动ssh会话时,请尝试仅使用wifi。然后插入您的以太网。这应该允许新的连接通过以太网,但是已建立的连接将保留在wifi上。至少我已经看到它在OSX上可以这样工作,因此OS /硬件可能会有所不同。


0

我很确定您可以通过使用虚拟机和隧道进行一些愚蠢的黑客攻击来做到这一点。

这未经测试,但请让我知道它是否确实有效。

  1. 创建具有2个接口,1个桥接适配器(用于wifi)和1个仅主机网络的来宾VM
  2. 可以说,虚拟机的桥接适配器将192.168.0.25连接到妻子,将192.168.56.5连接到主机。
  3. 在vm内创建ssh连接,并建立到远程端口22的隧道 ssh -L 10022:remote.server.example.com:22
  4. 现在通过隧道连接。 ssh 192.168.56.3 -p 10022
  5. 当您失去wifi连接时,将VM上的适配器更改为ethernet适配器。
  6. 希望它不会卡住或弄乱路由表

让我知道它是否有效。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.