Linux ssh远程连接断开问题处理办法解决

我们在通过远程连接操作Linux server的时候,有可能过一段时间忘记操作,便会发生ssh断开的问题。

而如果是本地的server,比较好办,直连设备kill掉ssh,踢掉无效用户连接,再次链接即可,但如果是远程server的话,那就比较麻烦。

而使用ssh连接远程服务器的时候,如果长时间没有操作,远程连接就有可能中断。正在执行的程序和vim等缓冲区数据都会丢失。

关于这个问题,下面有几种解决办法,供参考:

echo TMOUT=600 >> ~/.bashrc  或   echo TMOUT=600 >> /etc/profile    设置一个超时的秒数,600秒后终端上没有任何操作便自动断开连接。

或者 修改ssh客户端的配置:给/etc/ssh/ssh_config添加ServerAliveInterval 60

一.在Linux server去设置SSH保持连接时间:

基于安全的理由,如果用户连线到 SSH Server 后闲置,SSH Server 会在超过特定时间后自动终止 SSH 连线。以下是设定终止连线时间的方法:

1、打开 /etc/ssh/sshd_config 文件,找到一个参数为 ClientAliveCountMax,它是设定用户端的 SSH 连线闲置多长时间后自动终止连线的数值,单位为分钟。

2、如果这一行最前面有#号,将那个#号删除,并修改想要的时间。

3、修改后保存并关闭文件,重新启动 sshd:

/etc/rc.d/init.d/sshd restart

4. vim .bash_profile

export TMOUT=1000000

二.保持ssh连接不断开

用ssh连接服务端,一段时间不操作或屏幕没输出(比如复制文件)的时候,会自动断开

解决:(2种办法)

1、在客户端配置

#vi /etc/ssh/ssh_config(注意不是/etc/ssh/sshd_config文件),后面添加

Host *
ServerAliveInterval 30

这表示要让所有的ssh连接自动加上此属性;如果要指定服务端,如下:

使用-o的参数ServerAliveInterval来设置一个防止超时的时间

ssh -o ServerAliveInterval=30 IP地址 

2、在服务端配置

编辑服务器 /etc/ssh/sshd_config,最后增加

ClientAliveInterval 60
ClientAliveCountMax 1

这 样,SSH Server 每 60 秒就会自动发送一个信号给 Client,而等待 Client 回应

三.修改server和连接终端

Linux系统server

在linux系统中使用ssh连接远程服务器时,可以使用-o的一个参数ServerAliveInterval来设置防止超时的时间。

比如:ssh -o serveraliveinterval=60 username@hostIP

服务器配置修改

修改ssh配置文件/etc/ssh/sshd_config,添加或者修改ClientAliveInterval为“ClientAliveInterval 60”。这个参数的是意思是每1分钟,服务器向客户端发一个消息,用于保持连接。保存后记得重启ssh服务。

修改过后,上面几个办法都可以让ssh保持连接,一直处于alive状态,不会因为没有操作而被服务器强制断线了。

终端:

使用SecureCRT连接远程服务器,在会话选项 -> 终端设置中勾选“发送协议 NO-OP”。

使用putty连接远程服务器,找到Connection -> Seconds between keepalives ( 0 to turn off ), 默认为0,改为60。

四.如何退出退出无响应的 SSH 连接

有时候会发现 ssh 挂在那里没有响应了,可能是客户端的问题,也可能是服务器端的问题,也可能是客户端和服务器之间的网络问题;可能是客户端电脑休眠后连接断了、可能是网络断了、可能是 WiFi 信号不好、可能是网络延迟大了、可能是服务器挂了、也可能是服务器上的 sshd 进程挂了,…,可能是技术问题,也可能是非技术问题,可以找出无数可能。

有时我们离开办公桌前忘了退出 ssh 会话,或者工作的时候长时间 ssh 到服务器上忘记断开,之后发现那些没退出的 ssh 会话还挂在那里,无法退出、无法 Ctrl+C、无法做任何操作。通常我们就直接关闭 Terminal 后重新开一个新的;如果用的不是图形系统,没有窗口可以关闭,那还要启用另一个终端找到相关进程后 kill 掉。这里有一个小技巧,在那些没退出的 ssh 会话里用 ~. “优雅” 的断开连接。

可以这样操作:先 按“回车” 换行 再 按“shift + ` ”再按 “. ”

我们man 一下 ssh来看看:

其实Linux本身已经提供了很多便利的操作,只是我们需要多学习。以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Linux下实现SSH免密码登录和实现秘钥的管理、分发、部署SHELL脚本分享

    环境: ssh server: 192.168.100.29  server.example.com ssh client: 192.168.100.30  client.example.com 通过root用户建立秘钥认证实现SHELL脚本管理,分发,部署 首先client端创建秘钥对,并将公钥分发给需要登录的SSH服务端 注:公钥相当于锁,私钥相当于钥匙,我们这里相当于在客户端创建一对钥匙和锁,想要做到SSH免密码登录,就相当于我们将锁分发到服务端并装锁,然后客户端就可以利用钥匙开锁. 一.

  • 在PHP中运行Linux命令并启动SSH服务的例子

    升级 VPS 后,由于 Ubuntu 的 upstart 与 OpenVZ 的兼容问题,导致 sshd 服务不自动启动了,在尝试了 vePortal 的 console 与 file manager 及提交技术支持后都不能解决问题之后. 只能靠自己了,大概的思路是在 PHP 中进行 su 命令以执行 sshd 服务,因为 WordPress 还活着,并且可以在后台直接编辑主题相关的 PHP 脚本.只要把准备好的代码片断插入到 header.php 中,并在浏览器中访问一下主页即可. 相关的代码逻

  • linux下使用ssh远程执行命令批量导出数据库到本地

    前天正在跟前端的同事调试功能.服务器开好,模拟的玩家登录好,就在倒计时.这时突然运营的同事跑过来说要统计几个服务器玩家的一些情况,也就是需要从几个服的数据库导出部分玩家的数据.好吧,我看了一下时间,11:47.心想,跟前端调试完,去吃个饭再午休一下那就下午再给吧.没想对方来一句"就导个数据库而已,要这么久么?",而且还是直接跟我上司说的.我嚓,好吧,我导.可问题来了,平时的统计是由php做的,批量部署这些是由运维做的.服务端完全没有对应的工具.而且服务器是在阿里云上的,数据库的用户是限

  • 配置Linux服务器SSH 安全访问的四个小技巧

    我以 CentOS 为例,简单地总结一下如何配置 SSH 安全访问. Linux SSH 安全策略一:关闭无关端口 网络上被攻陷的大多数主机,是黑客用扫描工具大范围进行扫描而被瞄准上的.所以,为了避免被扫描到,除了必要的端口,例如 Web.FTP.SSH 等,其他的都应关闭.值得一提的是,我强烈建议关闭 icmp 端口,并设置规则,丢弃 icmp 包.这样别人 Ping 不到你的服务器,威胁就自然减小大半了.丢弃 icmp 包可在 iptables 中, 加入下面这样一条: 复制代码 代码如下:

  • Linux VPS安全设置之一 修改SSH端口(CentOS/Debian)

    老左在之前的不少文章中已经分享过在centos或者在debian环境下安装lnmp和llsmp的教程,老左用人格担保肯定是可行的,因为我都是在实战操作后截图及写下来的文章.可以让VPS初学者手把手的学习如何在Linux VPS上安装系统及建立网站.老左第一次使用VPS不会安装环境,准备请一个网友安装,还准备收费50元,鉴于此我就自学. 我们在学会了VPS的安装和建站之后,肯定需要附带学习VPS的安全设置.因为VPS和主机不同,主机商可能会给我们备份,而且主机的安全性都有主机商承担.但是,如果现在

  • linux ssh 别名登录小技巧

    为了方便登录服务器,我们一般使用putty.SecureCRT等等工具.在终端如何通过服务器别名来进行登录呢? 可以创建~/.ssh/config 文件并为每台服务器指定登录信息和验证方法,如下所示: $ vim ~/.ssh/config Host www HostName www.ttlsa.com Port 22 User root IdentityFile ~/.ssh/id_rsa.pub IdentitiesOnly yes Host bbs HostName 115.28.45.1

  • Linux SSH 安全策略 更改 SSH 端口

    默认的 SSH 端口是 22.强烈建议改成 10000 以上.这样别人扫描到端口的机率也大大下降.修改方法:# 编辑 /etc/ssh/ssh_config vim /etc/ssh/ssh_config # 在 Host * 下 ,加入新的 Port 值.以 18439 为例: Port 22 Port 18439 # 编辑 /etc/ssh/sshd_config (同上2图) vim /etc/ssh/sshd_config #加入新的 Port 值 Port 22 Port 18439

  • linux ssh 使用深度解析(key登录详解)

    SSH全称Secure SHell,顾名思义就是非常安全的shell的意思,SSH协议是IETF(Internet Engineering Task Force)的Network Working Group所制定的一种协议.SSH的主要目的是用来取代传统的telnet和R系列命令(rlogin,rsh,rexec等)远程登陆和远程执行命令的工具,实现对远程登陆和远程执行命令加密.防止由于网络监听而出现的密码泄漏,对系统构成威胁. ssh协议目前有SSH1和SSH2,SSH2协议兼容SSH1.目前

  • Linux sshd_config配置手册中文版

    [注意]值是大小写敏感的,但指令是大小写无关的. 复制代码 代码如下: # 1. 关于 SSH Server 的整体设定,包含使用的 port 啦,以及使用的密码演算方式Port 22 # SSH 预设使用 22 这个 port,您也可以使用多的 port ! # 亦即重复使用 port 这个设定项目即可!Protocol 2,1 # 选择的 SSH 协议版本,可以是 1 也可以是 2 , # 如果要同时支持两者,就必须要使用 2,1 这个分隔了!#ListenAddress 0.0.0.0 #

  • Linux VPS利用SSH重置ROOT密码的方法

    鉴于我们的VPS安全性,老左建议大家为了维护VPS的安全性,也有必要在一段时间修改ROOT密码.VPS管理平台用户后台如果没有修改ROOT密码,也不要紧,我们可以利用SSH直接修改,一个单词命令就可以完成.只需要两步就可以完成. 第一步,登录我们的SSH,一般老左喜欢用PUTTY软件直接登录,这个我相信大家不要我再截图给大家看了吧. 第二步,用root用户名和密码登录. 输入"passwd"命令回车后然后会提示我们输入新密码,然后回车再输入一次.回车后我们就设置完毕,以后我们就用新的R

随机推荐