合 scp或ssh报错packet_write_wait: Connection to 172.20.7.35 port 22: Broken pipe(如何防止 SSH 会话断开连接)
Tags: LinuxOSsshpacket_write_waitBroken pipe断开连接会话断开阻止
问题描述1
使用scp在A服务器执行命令,从A到B拷贝大一点的文件时,报错:scp packet_write_wait: Connection to port 22: Broken pipe
但是,在B服务器上执行命令从A服务器拷贝文件却不报错。
1 2 3 | [newgp@mdw2 ~]$ scp nohup.out smdw:/tmp/ nohup.out 0% 0 0.0KB/s --:-- ETApacket_write_wait: Connection to 192.28.169.16 port 22: Broken pipe lost connection |
分析
是网络原因引起的。估计得找网络管理员了。
若22端口的网络有限制,则也不建议使用22端口进行scp连接,类似报错packet_write_wait: Connection to 192.21.169.16 port 22: Broken pipe:
1 2 3 | [gpadmin@mdw2 ~]$ scp nohup.out smdw:/tmp/ nohup.out 0% 0 0.0KB/s --:-- ETApacket_write_wait: Connection to 192.21.169.16 port 22: Broken pipe lost connection |
或者网速会进行成倍的降低,从最初的150MB/s降低到最后的0KB/s.
解决
1、可以使用备用端口来传输。
2、从目标端直接拉取,而不是从源端推送
1 2 3 4 5 6 7 8 9 10 | cat >> /etc/ssh/sshd_config <<"EOF" Port 22 Port 2222 EOF systemctl restart sshd sed -i 's/ssh 22/ssh 2222/' /etc/services netstat -tulnp | grep 22 | grep ssh |
问题描述2
在终端用 iterm2 连接服务器时,使用 ssh root@xxx.xx.xx.xxx 命令登录服务器,一段时间不用服务器,再进入终端会无响应,报错
packet_write_wait: Connection to xxx.xx.xx.xxx port 22: Broken pipe
解决方法(如何防止 SSH 会话断开连接、如何阻止 SSH 断开连接)
在客户端打开 ~/.ssh/config
文件(下面的设置对所有的远程服务器都生效),如果没有就新建该文件:
(1)设置固定断开时间
在文件的最后添加如下代码: