在使用SSH客户端进行连接管理的时候如果长时间不输入命令, 服务器会自动断开连接, macOS Mojave(10.14.6)
系统上问题比较严重,即时服务端一直发送数据,也会出现连接中断的情况,导致长时间执行的远程 Shell
会大概率失败。
1 2 3 4 5 |
# 如果全局所有用户都有效,则调整如下文件 $ sudo vim /etc/ssh/ssh_config # 如果仅仅当前用户都有效,则调整如下文件 # vim ~/.ssh/config |
然后在配置文件尾部,增加如下内容:
1 2 3 4 5 6 7 8 9 10 11 12 |
Host * SendEnv LANG LC_* # macOS Mojave 需要设置为 no 否则照样会断开 TCPKeepAlive no # 客户端每隔 60S 发送一个空报文 ServerAliveInterval 60 # macOS Mojave 需要增加,原因在于Qos检测命令不被对端支持,导致连接丢失 # packet_write_wait: Connection to 10.10.10.111 port 22: Broken pipe IPQoS lowdelay throughput |
同时,对于超长时间的SSH监控,需要设置屏幕关闭时不要让电脑休眠,否则依旧会断开,原因在于对端发送数据的时候,电脑休眠,对于长时间的空连接是没问题的,但是对于数据频繁发送的情况,是必须阻止电脑休眠的。如下图:
参考链接
- Linux SSH保持连接(解决Broken pipe)
- mac上如何设置ssh不断掉,并且session保持
- 由于AppArmor,MySQL无法启动?
- SSH on OSX Mojave failing with broken pipe error
- VMware Fusion 11.0.0 + MacOS 10.14.2 — SSH commands (git in my case) throwing: ‘Broken pipe’ errors
- SSH connections dropped due to QoS flags
- 升级到 openssh 7.8p1 后 ssh 连接报错 packet_write_wait: Broken pipe
- SSH fails on macOS Mojave 10.14.1
- 防止macOS休眠断网的另类方法
用mosh啊 还能断开后再次连接自动重连