版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:http://www.one3.cn/?p=306
昨晚通过scp把其中一台服务器上面的文件传输到另一台机器上面,因为文件比较多且大,所以命令执行后预计要第二天才能传完,今早上去一看现在报错了:packet_write_wait: Connection to 192.168.1.80 port 22: Broken pipe。
上面这种情况我理解为:用 ssh 命令连接服务器之后,如果一段时间不操作,再次进入 Terminal 时会有一段时间没有响应,然后就出现错误提示。其实除了scp外,使用ssh也同样会有这样的情况发生
解决方案:
方法一:如果您有多台服务器,不想在每台服务器上设置,只需在客户端的 ~/.ssh/ 文件夹中添加 config 文件,并添加下面的配置:
ServerAliveInterval 60
方法二:如果您有多台个人管理服务器,不想在每个客户端进行设置,只需在服务器的 /etc/ssh/sshd_config 中添加如下的配置:
ClientAliveInterval 60
方法三:如果您只想让当前的 ssh 保持连接,可以使用以下的命令:
$ ssh -o ServerAliveInterval=60 user@IP
如果上面的方式还不能解决,那就使用下面的解决方式:(下面的方式可以一步步的测试,有时不只需要配置步骤1就可以了)
1、在~/.ssh/config配置文件中添加
IPQoS lowdelay throughput
2、在/etc/ssh/ssh_config配置文件中添加
IPQoS lowdelay throughput
3、临时解决可以再命令行中加入-o 'IPQoS=lowdelay throughput'参数即可
ssh -v -o 'IPQoS=lowdelay throughput' user@IP