欢迎来到我的博客
📔博主是一名大学在读本科生,主要学习方向是前端。
🍭目前已经更新了【Vue】、【React–从基础到实战】、【TypeScript】等等系列专栏
🛠目前正在学习的是🔥 R e a c t / 小程序 React/小程序 React/小程序🔥,中间穿插了一些基础知识的回顾
🌈博客主页👉codeMak1r.小新的博客

博主专栏【React–从基础到实战】持续更新中

ssh空闲自动断开

首先,我们在本机终端中使用ssh命令连接到远程服务器的时候,经常出现空闲一段时间ssh连接就断开的情况,每次都要重新输入密码,非常麻烦,而且之前连接中输入的命令也无法查看了。

原因是,ssh连接在一段时间检测不到操作后,就会进入假死状态,超时自动断开。

解决这个问题的方式也很简单,你既然要隔一段时间就非得检测到操作,那我就隔一段时间就去操作一次就好了。那难道这个操作需要我们自己手动操作吗?

其实,我们可以使用心跳机制,在配置文件中设置每隔一段时间就发送一个心跳包,来维持这次的ssh连接不中断。

解决办法

⇒ 客户端配置

我们可以在我们本机上,进行客户端的配置,每隔一段时间向服务器发送一个心跳包,来维持这次的ssh连接通道不关闭。

以macOS的terminal终端举例:

打开terminal终端,进入/etc/ssh目录

在这里插入图片描述
编辑ssh_config文件,此文件为ssh的客户端配置文件。

sudo vim ./ssh_config

ssh_config文件的最下方的Host *中新增

ServerAliveInterval 60

vim编译器中Shift + i进入编辑模式
编辑完成后,ESC退出编辑模式,:wq保存并退出当前文件

在这里插入图片描述

ServerAliveInterval 60 的含义是,每隔60s,就向ssh连接的服务器发送一个心跳包,维持ssh连接。

上面这个方式是macOS的全局配置,如果macOS下有多个用户,只想对当前用户进行配置的话,就进入当前用户的ssh_config下修改文件即可。

⇒ 服务端配置

我们可以通过ssh连接到我们的服务器上,对服务器进行配置。

cd /etc/ssh

在这里插入图片描述

编辑sshd_config文件,此文件为ssh服务端配置文件。

vim ./sshd_config

查找以下注释字段取消注释或直接添加至文件最后

ClientAliveInterval 60
ClientAliveCountMax 3

ClientAliveInterval 60 的含义是,每隔60s,就向ssh连接的客户端发送一个心跳包,维持ssh连接。

ClientAliveCountMax 3的含义是,服务器发出请求后客户端没有响应的次数达到一定值,就自动断开。正常情况下,客户端不会不响应。

client_loop: send disconnect: Broken pipe

在进行了ssh心跳的配置后,可能相隔一段时间还会出现下面这个错误。

client_loop: send disconnect: Broken pipe

  • 解决方案
    修改客户端的 /etc/ssh/ssh_config 配置文件
    在Host *条目下添加 IPQoS=throughput

在这里插入图片描述

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐