我雇主的无线网络经常掉线几秒钟。这将导致我不主动使用的 ssh 会话断开连接。有没有办法即使wifi短暂中断也能保持连接?
在可能的解决方案中,根据您的 ssh 会话的目的地以及您对它们的权限,可以在其之上建立另一个不会被关闭的接口。
您可以通过 VPN 来实现这一点。例如,要么是成熟的 VPN(openvpn、wireguard、商业 VPN),要么是基于ssh
和构建的 VPN。tun
回答结束
现在,谈谈我的设置方式(还有很多很多其他的):
就我而言,接口现在只会出现故障,每隔几个小时就会出现另一个公共 IP 地址。我关心的会话属于单个网络上的主机,因此我的解决方案是一条隧道,其中一个tun
设备位于我这边,另一个设备位于我想要访问的网络上。
只需一次,例如在启动时,在每一侧创建设备(您需要是 root):
ip tuntap add dev tun5 mode tun user youruser group yourgrup
ip address add 10.0.0.1/32 peer 10.0.0.2/32 dev tun5
Run Code Online (Sandbox Code Playgroud)
(反转另一侧的地址)
然后使用该-w local_tun[:remote_tun]
选项(在本例中-w 5:5
)正常从您的主机连接到其他主机。您不再需要特殊权限,因为您tun
为该用户/组创建了设备。
此时,您可以在备用地址 10.0.0.x 上的主机之间 ping 通,并且可以在设备上设置策略、natting、路由和所有内容tun5
,就像对任何其他网络设备所做的那样。
那么,当您的链接断开时会发生什么?那时,ssh
链接两个tun
设备的会话会终止,但tun
设备本身不会终止,它们只会缓冲数据,一旦再次连接,流量就会恢复。
重新启动链接ssh
会话会很乏味,而这正是autossh
发挥作用的地方。它将在需要时重新启动该会话。
您只需确保您希望在断开连接后继续存在的进程正在使用该接口(无论是 IP、路由、NAT...)。整个设置可能看起来有点大材小用,但它甚至可以与 DDNS 客户端一起使用。DNS 跟上更改后,会话将重新建立,并且使用tun
设备的客户端将恢复。