当前位置: 首页 > 工具软件 > Digital Write > 使用案例 >

Linux解决SSH连接超时提示packet_write_wait: Connection to 47.95.196.214 port 37682: Broken pipe

司立果
2023-12-01

问题

通过SSH连接Linux后,过了一段时间,输入任何内容没有反应。随便多输入一些后,提示如下:
packet_write_wait: Connection to 47.95.196.214 port 37682: Broken pipe

分析

很显然这是连接超时的问题。

SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定;SSH 为建立在应用层基础上的安全协议。SSH 是较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台。SSH在正确使用时可弥补网络中的漏洞。SSH客户端适用于多种平台。几乎所有UNIX平台—包括HP-UX、Linux、AIX、Solaris、Digital UNIX、Irix,以及其他平台,都可运行SSH。

SSH 为 Secure Shell 的缩写,使用的是安全协议。

所以SSH不允许你无期限登录Linux,肯定有个超时时间。

所以我们给这个超时时间设置长一点就行了。

解决

方法一,在服务器端修改sshd_config文件(不推荐)

目前大多数ssh服务是运行在Linux系统上的sshd服务。
所以我们可以修改sshd的配置来避免超时。

按照如下步骤操作即可:

  1. sudo vim /etc/ssh/sshd_config
  2. 修改以下两个参数的值
  • ClientAliveInterval:服务器端向客户端请求消息的时间间隔, 如果是0,不发送。
  • ClientAliveCountMax:客户端没有响应的超时次数。

例如:

# 下面代码意思是如果60秒*3=180秒/60=3分钟后客户端不响应,则ssh连接自动退出。
ClientAliveInterval 60   #server每隔60秒发送一次请求给client,然后client响应,从而保持连接
ClientAliveCountMax 3  #可以不用修改。server发出请求后,客户端没有响应得次数达到3,就自动断开连接,正常情况下,client不会不响应

为了安全起见,建议将ClientAliveCoutMax设置为0,ClientAliveInterval 设置为300到900,即保持连接5-15分钟。

一般不建议在server端设置,因为这样会对所有连接的cient生效,有安全隐患

方法二,在客户端修改ssh_config文件(不推荐)

和在服务器端修改的方式一样的,要注意的是:

  • 服务器端修改的是sshd_config文件,客户端修改的是ssh_config
  • 服务器端修改两个参数的是ClinetAliveCoutMaxClientAliveInterval
  • 客户端修改两个参数的是ServerAliveCoutMaxServerAliveInterval

方法三,ssh连接参数添加 -o ServerAliveInterval=(推荐)

如下代码表示保持连接6分钟

ssh -o ServerAliveInterval=360 root@192.168.1.1

还可以用于rsync+ssh同步一个大的sparse文件

rsync -a -z -vvv -S -e ssh -o “ServerAliveInterval 5400” images/vir_w23_x86_17_d.img kvm03:/opt/images/vir_w23_x86_17_d.img1

支持蘭


  • [关注❤️我吧],我会持续更新的。
  • [点个赞吧],码字不易麻烦了。

 类似资料: