背景:
通过OSX 的 终端使用ssh命令连接服务器总是会出现自己断开连接,要不然就是卡死,无法输入命令,需要等一会儿才能显示断开连接了.
解决:
ssh_config和sshd_config都是ssh服务器的配置文件,二者区别在于,前者是针对客户端的配置文件,后者则是针对服务端的配置文件。
方法一: 针对服务端修改
1、编辑ssh配置文件:
# vi /etc/ssh/sshd_config
加入如下三个参数保存就可以
#表示TCP保持连接不断开 TCPKeepAlive yes #每6分钟(360秒)向client端发个包 ClientAliveInterval 360 #最多发20次,这样可以保持2小时(7200秒)的连接 ClientAliveCountMax 20
注意保持该文件的444的权限,防止出现安全问题.
2、重启sshd生效:
etc/init.d/sshd restart
注:此法适用于所有Linux发行版的OpenSSH。ClientAliveInterval是设定SSH强制超时断开的参数
ClientAliveInterval指定了服务器端向客户端请求消息的时间间隔, 默认是0,不发送。而ClientAliveInterval 360表示每6分钟发送一次,然后客户端响应,这样就保持长连接了。这里比较怪的地方是:不是客户端主动发起保持连接的请求(如FTerm, CTerm等),而是需要服务器先主动。
ClientAliveCountMax表示服务器发出请求后客户端没有响应的次数达到一定值,就自动断开,正常情况下,客户端不会不响应。
方法二:针对客户端修改
1、编辑ssh配置文件:
#需要root权限,普通用户的是没权限修改的 sudo vi /etc/ssh/ssh_config
2、增加配置
ServerAliveInterval 60
注: 配置文件详细介绍
Host * 选项“Host”只对能够匹配后面字串的计算机有效。“*”表示所有的计算机。 ForwardAgent no“ForwardAgent”: 设置连接是否经过验证代理(如果存在)转发给远程计算机。 ForwardX11 no“ForwardX11” 设置X11连接是否被自动重定向到安全的通道和显示集(DISPLAY set)。 RhostsAuthentication no“RhostsAuthentication” 设置是否使用基于rhosts的安全验证。 RhostsRSAAuthentication no“RhostsRSAAuthentication” 设置是否使用用RSA的基于rhosts的安全验证。 RSAAuthentication yes“RSAAuthentication” 设置是否使用RSA算法进行安全验证。 PasswordAuthentication yes“PasswordAuthentication” 设置是否使用口令验证。 FallBackToRsh no“FallBackToRsh” 设置如果用ssh连接出现错误是否自动使用rsh。 UseRsh no“UseRsh” 设置是否在这台计算机上使用“rlogin/rsh”。 BatchMode no“BatchMode” 如果设为“yes”, passphrase/password (交互式输入口令)的提示将被禁止。当不能交互式输入口令的时候,这个选项对脚本文件和批处理任务十分有用。 CheckHostIP yes“CheckHostIP”设置ssh是否查看连接到服务器的主机的IP地址以防止DNS欺骗。建议设置为“yes”。 StrictHostKeyChecking no“StrictHostKeyChecking” 如果设置成“yes”,ssh就不会自动把计算机的密匙加入“$HOME/.ssh/known_hosts”文件,并且一旦计算机的密匙发生了变化,就拒绝连接。 IdentityFile ~/.ssh/identity“IdentityFile” 设置从哪个文件读取用户的RSA安全验证标识。 Port 22“Port” 设置连接到远程主机的端口。 Cipher blowfish“Cipher” 设置加密用的密码。 EscapeChar ~“EscapeChar” 设置escape字符。
参考:
https://www.jianshu.com/p/92d60c6c92ef
https://www.jianshu.com/p/31ea8c46487b
还没有评论,来说两句吧...