Ubuntu中SSH连接,一段时间自动断开的解决办法

在客户端和服务器上修改ssh_config和sshd_config文件,设置ServerAliveInterval和ClientAliveCountMax参数以防止SSH连接超时,然后重启SSH服务以应用更改。这确保了长时间运行的SSH会话保持活动状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

客户端:

sudo vim /etc/ssh/ssh_config
# 添加命令
ServerAliveInterval 20
ServerAliveCountMax 999
# 重启
sudo service ssh restart

服务器:

sudo vim /etc/ssh/sshd_config
# 添加命令
ClientAliveInterval 30
ClientAliveCountMax 6
# 重启
sudo service ssh restart

或者参考这个

为了确保SSH连接稳定并且不会因为短暂的网络波动或其他原因而断开,可以使用`autossh`这一工具来自动监控和重新建立SSH连接。下面是关于如何配置`autossh`的一些关键点以及示例说明: ### 安装 autossh 首先你需要确认系统上已经安装了 `autossh`. 如果还没有安装的话,在基于Debian或Ubuntu系统的Linux发行版中你可以通过下面这条命令来进行安装: ```bash sudo apt-get install autossh ``` 对于其他操作系统如CentOS/RHEL, 可能需要用 yum 包管理器: ```bash sudo yum install epel-release sudo yum install autossh ``` 也可以直接从源码编译安装最新的版本。 ### 配置 Autossh 启动 SSH 连接 接下来就是编写启动脚本来让Autossh帮你监视并维护远程SSH连接了。这里给出一个简单的例子,假设你想将本地端口8080转发到名为example.com 的服务器上的3000端口: ```bash #!/bin/bash # 设置一些必要的环境变量 export AUTOSSH_GATETIME=0 # 立即尝试重连而不是等待一段时间后再试 # 执行 autossh 命令创建隧道,并指定必要选项 autossh -M 20000 \ -o "ServerAliveInterval 60" \ # 每隔60秒向服务器发送一次心跳包以防止闲置超时 -o "ServerAliveCountMax 3" \ # 允许连续三次失败的心跳检测之后才认为连接断开 -N \ -L 8080:localhost:3000 # 创建本地监听8080端口至远程主机localhost(也就是自身)的3000端口之间的反向代理 example.com # 目标服务器地址 ``` > **注意**: `-M 20000` 参数是用来告诉 autossh 开启一个独立于主 ssh 进程之外辅助通道用于监测ssh链路的状态,默认情况下会占用两个相邻端口号(在这个例子中分别是20000 和 20001),因此请确保这些端口未被占用。 ### 将此脚本加入开机自启服务 为了让这个过程自动化,最好把这个脚本添加进系统的init.d或者systemd service里边去。例如在Systemd下可以这样做: 编辑一个新的service文件 `/etc/systemd/system/myservice.service`, 内容如下: ```ini [Unit] Description=Maintain an open tunnel to Example Server via autossh After=network.target [Service] ExecStart=/path/to/your/script.sh ; 替换成上面写的shell script的位置 Restart=always ; 当进程退出后总是重启该服务 User=<username> [Install] WantedBy=default.target ``` 然后启用并在下次重启计算机时让它随系统一起加载: ```bash sudo systemctl daemon-reload # 刷新 systemd configuration cache sudo systemctl enable myservice.service # 设定为开机启动项 sudo systemctl start myservice.service # 即刻开始运行此服务 ``` ### 测试稳定性 最后一步就是要测试一下新配置是否有效果啦!试着关闭一下WiFi、拔掉网线等方式模拟可能出现的真实世界里的短时间失联情况看看能不能迅速恢复正常通讯即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值