Mac 中 iterm2 使用 SSH 连接服务器时,会出现与服务器中断/无响应的问题。
主要原因是:是服务器端把空闲连接给断开了,或者是网络断开
iterm2/terminal 使用 SSH 命令连接服务器过程中会定时发送心跳以确定是否客服端与服务端是否连接。
客服端中设定的通信时间过长,服务端中也有这空闲一段时间后会断开远程连接的机制,两边任意一方没有通信请求,连接中断。
思路,修改客服端发送通信心跳间隔,或者修改服务器中的时间间隔。
解决方案:
修改客服端/Mac 中的 SSH 参数
修改服务器端中的配置
客服端/Mac 中修改 SSH 参数
客服端中通过配置 ServerAliveInterval 来实现,在 ~/.ssh/config 中加入: ServerAliveInterval=30
1
2
3
4
5
6
7
vi ~/.ssh/config
Host *
ServerAliveInterval 45
ServerAliveInterval 30 # 表示 ssh 客户端每隔 30 秒给远程主机发送一个 no-op 包,no-op 是无任何操作的意思,这样远程主机就不会关闭这个 SSH 会话。可根据实际情况更改时间间隔
Host * 是指任意服务 IP
服务器端中的配置1
2
3
4
5
vim /etc/ssh/sshd_config
ClientAliveInterval 30
ClientAliveCountMax 6
ClientAliveInterval 表示每隔多少秒,服务器端向客户端发送心跳
下面的 ClientAliveInterval 表示上述多少次心跳无响应之后,会认为 Client 已经断开。
所以,总共允许无响应的时间是 60*3=180 秒
注:本文仅作为日常实践记录
参考文档: