Linux解决SSH连接超时提示packet_write_wait

(一)问题

通过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不允许你无期限登录Linux,肯定有个超时时间,所以我们给这个超时时间设置长一点就行了。

(三)解决

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

目前大多数ssh服务是运行在Linux系统上的sshd服务,所以我们可以修改sshd的配置来避免超时。按照如下步骤操作即可:

vim /etc/ssh/sshd_config
修改以下两个参数的值
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。客户端修改两个参数的是ServerAliveCoutMax和ServerAliveInterval。

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

 在发起ssh访问时,可以按照如下代码运行,ServerAliveInterval=360表示保持连接6分钟:

ssh -o ServerAliveInterval=360 root@192.168.1.1

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

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.img
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值