iTerm2保持ssh连接不断开
解决 iTerm2 经常断开ssh连接问题。
iTerm2连接ssh一个蛋疼的问题
在mbp笔记本上安装了iTerm2来替换自带的终端,简洁易用,让人一下子就喜欢上,但是使用iTerm2进行ssh连接时,空闲一段时间,连接就会断掉…… 后来因为工作关系,要频繁的连接ssh,实在受不了就转投SecureCRT了,因为SecureCRT有一个空闲时保持连接的设置,还是不错的,但是不习惯SecureCRT的界面和字体,感觉太臃肿了。所以还是想继续使用iTerm2,下面就来介绍如何解决iTerm2短连的问题。
一些主流工具修改ssh连接的配置
通过改变连接工具的一些默认配置,把keepalive的配置打开起来即可:
secureCRT
:会话选项 - 终端 - 反空闲 - 发送NO-OP每xxx秒,设置一个非0值。
putty
:Connection - Seconds between keepalive(0 to turn off),设置一个非0值。
iTerm2
:profiles - sessions - When idle - send ASCII code.
XShell
:session properties - connection - Keep Alive - Send keep alive message while this session connected. Interval [xxx] sec.
当然,用这个办法的副作用也是有的,比如iTerm2会出现一些并不想输入的字符、vim会有些多余字符插入等等。
如何解决
问题主要是:是服务器端把空闲连接给断开了,或者是mbp的wifi连接会自动断开。。。
1. 通过iTerm2配置参数
profiles -> sessions -> When idle, send ASCII code
这样配置会有一个问题,比如配置ASCII code 为 97, 也就是a,开着iTerm2,过一段时间过来时,屏幕上会有一串aaaaaaaaa,你必须得手动删除,蛋疼。
2. 配置ssh参数
正确的做法是,通过配置 ServerAliveInterval 来实现,在 ~/.ssh/config
中加入: ServerAliveInterval=30
ServerAliveInterval 30 #表示ssh客户端每隔30秒给远程主机发送一个no-op包,no-op是无任何操作的意思,这样远程主机就不会关闭这个SSH会话。
打开vim ~/.ssh/config
, 新增:
Host *
ServerAliveInterval 60
我觉得60秒就好了,而且基本去连的机器都保持,所以配置了*,如果有需要针对某个机器,可以自行配置为需要的serverHostName。
再经过最后的验证,方案二确实为最优选择。