shell环境和sshd服务有什么区别?(shelly ssh client)
nanshan 2024-10-26 11:16 10 浏览 0 评论
回答行业问题
这个其实是shell环境和ssh会话的问题,问题看似简单,其实说起来,话题很长。
首先解答问题中两者的区别,然后对ssh会话和shell环境的关系、ssh会话和会话超时之间展开说明。
TMOUT是shell环境下的变量,从名字就可以看出是控制超时时间的,ClientAliveInterval参数是sshd服务会话连接保活的参数。
前者是超时时间,后者是保活连接,看似是一个很对立的关系,但是它们之间,首先来说一下它们的区别。
两者区别
shell空闲等待时间TMUOT变量
TMOUT是shell环境下的一个环境变量,它控制shell环境系统空闲等待时间。一般配置在/etc/profile文件当中,Linux系统默认不配置TMOUT环境变量的值。
当TMOUT的值大于0时,比如为10,shell进空闲等待当终端超过10秒没所有输入,bash将关闭当前shell环境,终端连接断开,长时间离开电脑后断开终端连接,对服务器也是一种保护。
从上图可以看出,配置TMOUT环境的值变量为10之后,ssh终端就自动断开了。
ClientAliveInterval sshd服务保活参数
这个参数和ClientAliveCountMax参数配合使用,sshd服务配置这两个参数之后,比如ClientAliveInterval = 300、ClientAliveCountMax = 3。sshd服务会每隔300秒会给客户端发送心跳包,当客户端没有响应时会进行3次重试,重试后依然没有响应,断开ssh连接。
到这里就看出它们的区别了,TMOUT是控制shell环境虚拟终端层面,当终端没有输入时,多长时间断开终端。而ClientAliveInterval参数是控制sshd服务和ssh客户端之间,没有网络通信时多长时间断开和客户端的连接。
总是说shell环境和sshd服务,那它们之间有什么关系呢?继续往下。
shell环境和sshd服务的关系
现在使用的的终端工具比如xshell、putty、CRT等都集成了ssh客户端,当终端发起ssh请求和sshd服务建立连接,并且通过验证,这时sshd服务将创建一个会话,然后调用系统接口创建一个新的pts字符设备文件,同时sshd服务会创建一个shell环境。
最后将ssh会话和pts字符设备文件绑定,字符设备文件再和和shell绑定,这样就创建了ssh会话和shell环境的连接。
当终端输入命令时,首先会将数据通过ssh协议发送给sshd服务,sshd将数据发送给对应的会话,会话将数据发送给pst字符设备文件,字符设备文件将数据最终转发到shell环境。
shell处理完命令请求,然后依次shell--pts符号设备文件--ssh会话--终端工具,这样就完成了终端界面,控制Linux shell的过程。
从上面的阐述可以得出,shell是sshd服务创建的,但是它们又是独立的,通过pts字符设备文件联系在一起。
ssh会话保活和自动超时
平时使用ssh工具连接linux服务器时,总是超时,这时就可以配置sshd服务定时进行心跳检测,防止通信超时断开。
现在ssh工具也都具备网络保活的功能,也可以通过设置客户端程序来进行连接保活,原理和sshd服务一样,定期发送心跳包。
对于安全比较重视的人来说,这样显然是不合理的,这时就可以设置shell环境变量TMOUT定义系统空闲等待时间,在不使用终端时自动断开。
这里一直是在说超时,那么什么都不配置,ssh会话为什么超时了?继续往下看。
ssh会话为什么会超时?
ssh会话属于TCP长连接,linux系统定义了TCP长连接的超时时间,一般是7200秒,也就是两个小时,长连接达到这个时间就会发起心跳包,检测TCP连接,但是在实际场景到不了这个时间就会断开,比如NAT环境。
ipv4地址有限,我们的上网环境一般都在NAT路由设备后面,NAT路由维护着一张NAT表,当tcp连接长时间没有数据通信,NAT路由就会将这个连接从NAT表中移除,这会引起ssh会话就中断超时。
NAT超时时间远远达不到两个小时,所以TCP长连接如果没有心跳,很容易出现超时现象,再有就是网络不稳定,也会造成连接断开。
总结,我们从最初的shell环境变量TMOUT出发,将shell和sshd服务进行关联,介绍了它们之间的关系,引出了shell环境超时和sshd服务超时,并说明了自动超时和保活会话的应用,最后解释了服务超时的原因,环环相连,到这里我想对于ssh会话已经有了基本了解。
以上回答希望能够帮助到你,欢迎大家评论留言。
相关推荐
- 雷军1994年写的老代码曝光,被称像诗一样优雅
-
大数据文摘授权转载自程序员的那些事雷军的代码像诗一样优雅↓↓↓有些网友在评论中质疑,说雷军代码不会是“屎”一样优雅吧。说这话的网友,也许是开玩笑的,也许是真没看过雷军写过的代码。在2011年的时候,我...
- 原创经验分享:低级bug耗费12小时Fix
-
调试某程序非常简单的程序,简单到认为不可能存在缺陷,但该BUG处理时间超过12小时:程序属于后台进程,监控系统每隔15秒检查外设IO状态,IO异常后发出报警或复位外设,外设都在linux下有/sys/...
- SpringBoot实现的简单停车位管理系统附带导入和演示教程视频
-
这一次为大家带来的是简单的停车位管理系统,基于SpringBoot+Thymeleaf+Mybatis框架,这个系统相对来说比较简单,很容易学习并快速上手,因为逻辑很清晰,没有太复杂的代码逻辑,所以学...
- 一个开箱即用的代码生成器(代码自动生成工具开源)
-
今天给大家推荐一个好用的代码生成器,名为renren-generator,该项目附带前端页面,可以很方便的选择我们所需要生成代码的表。首先我们通过git工具克隆下来代码(地址见文末),导入idea。...
- 【免费开源】JeecgBoot单点登录源码全部开源了
-
JeecgBoot单点登录源码全部开源了,有需要的朋友可以来薅羊毛了。一、JeecgBoot介绍JeecgBoot是一款企业级的低代码平台!前后端分离架构SpringBoot2.x,SpringCl...
- SpringBoot+JWT+Shiro+Mybatis实现Restful快速开发后端脚手架
-
作者:lywJee来源:cnblogs.com/lywJ/p/11252064.html一、背景前后端分离已经成为互联网项目开发标准,它会为以后的大型分布式架构打下基础。SpringBoot使编码配置...
- 为什么越来越多的人选择使用idea软件
-
IDEA软件是什么?IDEA软件是干什么的?为什么越来越多的人选择使用IDEA软件?IDEA软件,全称IntelliJIDEA,它是由JetBrains公司开发开发的一款功能强大的集成开发环境(ID...
- 开题报告大学生互助系统(附源码)java毕设
-
本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容选题背景随着互联网技术的飞速发展,大学生群体对信息共享与互助的需求日益增长。关于大...
- SpringBoot项目快速开发框架JeecgBoot——项目简介及系统架构!
-
项目简介及系统架构JeecgBoot是一款基于SpringBoot的开发平台,它采用前后端分离架构,集成的框架有SpringBoot2.x、SpringCloud、AntDesignof...
- 新手配电脑13代CPU怎么选择(新手配电脑13代cpu怎么选择好)
-
Intel第13代酷睿i3、i5、i7、i9系列处理器的核心参数、性能差异及适用群体的详细说明(以桌面端为例):一、13代酷睿全系参数对比(桌面端主流型号)参数i3-13100i5-13600Ki7-...
- 加速 SpringBoot 应用开发,官方热部署神器真带劲
-
平时使用SpringBoot开发应用时,修改代码后需要重新启动才能生效。如果你的应用足够大的话,启动可能需要好几分钟。有没有什么办法可以加速启动过程,让我们开发应用代码更高效呢?今天给大家推荐一款Sp...
- 基于微信小程序的移动端物流系统-计算机毕业设计源码+LW文档
-
摘要随着Internet的发展,人们的日常生活已经离不开网络。未来人们的生活与工作将变得越来越数字化,网络化和电子化。网上管理,它将是直接管理移动端物流系统app的最新形式。本论文是以构建移动端物流系...
- springboot教务管理系统+微信小程序云开发附带源码
-
今天给大家分享的程序是基于springboot的管理,前端是小程序,系统非常的nice,不管是学习还是毕设都非常的靠谱。本系统主要分为pc端后台管理和微信小程序端,pc端有三个角色:管理员、学生、教师...
- SpringBoot全家桶:23篇博客加23个可运行项目让你对它了如指掌
-
SpringBoot现在已经成为Java开发领域的一颗璀璨明珠,它本身是包容万象的,可以跟各种技术集成。本项目对目前Web开发中常用的各个技术,通过和SpringBoot的集成,并且对各种技术通...
- Maven+JSP+Servlet+C3P0+Mysql实现的音乐库管理系统
-
本系统基于Maven+JSP+Servlet+C3P0+Mysql实现的音乐库管理系统。简单实现了充值、购买歌曲、poi数据导入导出、歌曲上传下载、歌曲播放、用户注册登录注销等功能。难度等级:简单技术...
你 发表评论:
欢迎- 一周热门
-
-
UOS服务器操作系统防火墙设置(uos20关闭防火墙)
-
极空间如何无损移机,新Z4 Pro又有哪些升级?极空间Z4 Pro深度体验
-
手机如何设置与显示准确时间的详细指南
-
NAS:DS video/DS file/DS photo等群晖移动端APP远程访问的教程
-
如何在安装前及安装后修改黑群晖的Mac地址和Sn系列号
-
如何修复用户配置文件服务在 WINDOWS 上登录失败的问题
-
日本海上自卫队的军衔制度(日本海上自卫队的军衔制度是什么)
-
10个免费文件中转服务站,分享文件简单方便,你知道几个?
-
爱折腾的特斯拉车主必看!手把手教你TESLAMATE的备份和恢复
-
一加手机与电脑互传文件的便捷方法FileDash
-
- 最近发表
- 标签列表
-
- linux 查询端口号 (58)
- docker映射容器目录到宿主机 (66)
- 杀端口 (60)
- yum更换阿里源 (62)
- internet explorer 增强的安全配置已启用 (65)
- linux自动挂载 (56)
- 禁用selinux (55)
- sysv-rc-conf (69)
- ubuntu防火墙状态查看 (64)
- windows server 2022激活密钥 (56)
- 无法与服务器建立安全连接是什么意思 (74)
- 443/80端口被占用怎么解决 (56)
- ping无法访问目标主机怎么解决 (58)
- fdatasync (59)
- 405 not allowed (56)
- 免备案虚拟主机zxhost (55)
- linux根据pid查看进程 (60)
- dhcp工具 (62)
- mysql 1045 (57)
- 宝塔远程工具 (56)
- ssh服务器拒绝了密码 请再试一次 (56)
- ubuntu卸载docker (56)
- linux查看nginx状态 (63)
- tomcat 乱码 (76)
- 2008r2激活序列号 (65)