远程服务器会话断开和重连恢复

背景介绍
最近在使用VScode连接远程服务器运行模型训练任务,但是由于各种原因导致当前vscode与远程服务器连接中断,但是当再次连接到远程服务器的时候,发现之前的运行程序的终端窗口恢复不了,只能重新开启窗口再执行,如何才能恢复历史对话内容呢?经网上查阅资料,并实践后,发现如下方法可行。

安装Tmux

在远程服务器(Ubuntu)安装Tmux

sudo apt update
sudo apt install tmux

检查安装是否成功

tmux -V

有版本打印说明安装成功

详细用法

会话重连恢复的前提条件就是需要在执行任务之前先启动一个tmux会话

tmux new -s my_session
  • 这会启动一个名为 my_session 的会话。
  • 在会话中,可以运行任何命令,比如启动脚本或程序。

重连会话

指再次连接到远程服务器并且恢复之前执行的内容

tmux attach -t my_session

关闭会话

在当前会话中输入如下指令,即可退出当前会话

exit

或者kill 特定的会话

tmux kill-session -t my_session
### 服务器远程连接断开的原因分析 对于服务器启后无法被远程连接的问题,通常涉及多个方面。网络配置不当可能导致防火墙阻止了必要的端口访问[^1]。此外,在某些情况下,SSH守护进程可能未能正确启动或配置文件存在问题。 针对使用PuTTY或其他工具进行远程连接时发生的超时断开情况,这主要是由客户端与服务器之间的保持活动状态设置不合理引起。具体来说,如果一段时间内没有任何数据传输,则可能会触发服务器侧的安全策略从而切断连接[^2]。 另外一种常见原因是SSH服务本身具有检测不活跃会话的功能,并会在一定时间内关闭这些无响应的链接。这种情况下的确容易造成误判,尤其是在低流量环境下工作时更为明显[^3]。 最后还有一种特殊情况发生在Windows Server环境中,即RDP协议处理过程中可能出现异常状况,使得合法用户的正常登录请求遭到拒绝并迅速终止其会话。这类问题往往同操作系统内部的服务组件有关联[^4]。 ### 解决方案概述 为了防止因上述任一因素而导致的意外掉线现象,可以采取如下措施: #### 调整KeepAlive参数 修改SSH客户端/或服务器上的`ServerAliveInterval`以及`ClientAliveInterval`选项来发送定期心跳包维持链路畅通。例如,在Linux系统的`.ssh/config`文件中加入以下内容: ```bash Host * ServerAliveInterval 60 ``` #### 修改TCP Keepalive时间间隔 调整操作系统的TCP keep-alive定时器以减少不必要的断连风险。可以通过编辑/etc/sysctl.conf (适用于大多数Unix-like系统) 来实现这一点: ```bash net.ipv4.tcp_keepalive_time = 600 net.ipv4.tcp_keepalive_intvl = 60 net.ipv4.tcp_keepalive_probes = 5 ``` 随后应用更改命令 `sysctl -p` 即可生效。 #### 配置防火墙规则允许长期连接 确保安全组或iptables等防护设施不会过早地清除闲置连接条目。适当放宽对特定端口号的数据流监控阈值有助于提高稳定性。 #### 处理特殊环境中的兼容性问题 如果是基于Windows平台遭遇类似困扰的话,则需点排查Remote Desktop Services的相关属性设定是否合理;必要时更新补丁程序版本或是装受影响模块直至恢复正常运作为止。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值