Linux 下 SSH 远程超时解决方案
今天突然看到一个问题说是如何解决SSH远程超时的问题。
找了一点资料。用于解决这个需求~
第一种:OpenSSH 配置文件设置
位于112行的 "ClientAliveInterval "以及位于113行的"ClientAliveCountMax"意义解释如下:
- ClientAliveInterval:即The length of time Server Sent Client ,服务器发给客户端时间间隔。
- ClientAliveCountMax:即Server Sent Client NOT REPLY,服务器发给客户端,客户端无响应。
俩行,简单说就是:一个决定多久找你,一个决定找你次数。
注意要重启SSH服务才能生效。如果上种你觉得不能理解或者不能体现水平。看下面这种~
第二种: Shell 脚本编写实现永不超时
首先,欣赏这行代码:
、#!/usr/bin/expect
告诉操作系统脚本里的代码使用那一个shell来执行
、set timeout 60s
使用了set命令设置了超时时间为60s。
、spawn ssh user@host
首先spawn是expect内部命令。作用就是给ssh新进程创建新expect,用来传递交互指令也实现了让expect控制的用处!
、interact
交互命令,用来打开用户与产生进程之间通信的命令。
、send
用于expect 脚本正在监控的进程生成输入。send合并选项以发送给指定的产生的过程"-i",缓慢地发送"-s"(在串行通信中,为了不使缓冲区溢出)
关于expect:
export命令用于将shell变量输出为环境变量,或者将shell函数输出为环境变量,同时它也可以传递。说到底就是一个脚本语言,可以帮助系统管理员进行自动终端交互的好朋友.
第三种:环境变量临时改变
同样你也可以写入$HOME/.profile文件,永久生效!
最后:
你来想想,我们还有第四种吗?想想服务器要检测客户端还活着没,客户端能看些啥?
试试“ping”吧,也许你还有第四种~