操作系统:SSH协议知识介绍
今天给大家分享SSH协议相关的知识介绍,希望对大家能有所帮助!
1、SSH协议概念介绍
SSH(Secure Shell)安全外壳协议,是一种建立在应用层基础上的安全协议,通过对密码进行加密传输验证,可以在不安全的网络中对网络服务提供安全的传输环境,实现SSH客户端和SSH服务器端的连接,所以SSH是基于客户端-服务端模式。
2、SSH服务组成
SSH服务由服务端软件OpenSSH和连接客户端组成(SSH、SecureCRT,xshell等),默认端口是22。SSH是一个守护进程,负责实时监听客户端请求,并进行处理。
3、SSH协议框架组成
SSH协议框架中核心部分的三个协议:传输层协议、用户认证协议、连接协议。
传输层协议(The Transport Layer Protocol):提供服务器认证,数据安全性,信息完整性等功能的支持。
用户认证协议(The User Authentication Protocol):为服务器提供客户端的身份的识别。
连接协议(The Connection Protocol):将加密的信息隧道复用成若干个逻辑通道,提供给更高层的应用协议使用; 各种高层应用协议可以相对地独立于SSH基本体系之外,然后依靠这个基本框架,通过连接协议使用SSH的安全机制。
4、SSH工作流程
4.1 版本号协商阶段
SSH目前包括 SSH1和SSH2两个版本, 双方通过版本协商确定使用的版本
服务端开启22端口,等待客户端发起连接请求
客户端向服务端发起TCP初始连接请求,建立后,服务端向客户端发送报文(版本标志字符串:SSH-<主协议版本号>.<次协议版本号>-<软件版本号>>)
客户端收到报文后,解析数据包,如果服务端的协议版本号比自己的低,且客户端能支持服务端的低版本,就采用服务器端的低版本协议号,否则采用客户端自己的协议版本号。
客户端回应服务器一个报文,包含客户端决定使用的协议版本号。服务端会比较客户端发来的版本号,决定是否能同客户端进行正常工作。
协商成功,就会进入密钥和算法协商阶段,否则服务端断开TCP连接。
注意:版本号协商阶段报文都是采用明文方式传输的。
4.2 密钥和算法协商阶段
SSH支持多种加密算法, 双方根据服务端和客户端支持的算法,协商出最终使用的算法
服务端和客户端分别发送算法协商报文给对方,报文中包含自己支持的公钥算法列表、加密算法列表、MAC(Message Authentication Code,消息验证码)算法列表、压缩算法列表等协商信息。
服务端和客户端根据对方和自己支持的算法列表确定最终使用的算法。
服务端和客户端利用 DH交换(Diffie-Hellman Exchange)算法、主机密钥对等参数,生成会话密钥和会话 ID,然后双方都拿到了相同的会话ID和会话密钥。
后续数据通信,两端都会使用会话密钥进行加密和解密,从而保证了数据传送的安全
认证阶段,两端会使用会话 ID用于认证过程。
注意:在协商阶段之前,服务器端已经生成 RSA或 DSA密钥对,主要用于参与会话密钥的生成。
4.3 认证阶段
SSH客户端向服务端发起认证请求, 服务端会对客户端进行认证
客户端向服务端发送认证请求,认证请求信息中包含用户名、认证方法、与该认证方法相关的内容(比如:password认证时,内容为密码)。
服务端对客户端进行认证,如果认证失败,会向客户端发送认证失败消息,其中也包含可以再次发起认证的方法列表。
客户端从服务端返回的认证方法列表中选取一种认证方法再次进行认证。
该过程反复进行, 直到认证成功或者认证次数达到上限, 服务端关闭连接为止。
4.5 会话请求阶段:
认证通过后,客户端向服务端发送会话请求
服务器等待客户端的请求;
认证通过后,客户端向服务器发送会话请求;
服务器处理客户端的请求。请求被成功处理后, 服务端会向客户端回应 SSH_SMSG_SUCCESS包,SSH进入交互会话阶段;否则回应 SSH_SMSG_FAILURE包,表示服务器处理请求失败或者不能识别请求。
4.6 交互会话阶段
会话请求通过后,服务端和客户端可以进行信息的交互
客户端将要执行的命令加密后传给服务器;
服务器接收到报文,解密后执行该命令,将执行的结果加密发还给客户端;
客户端将接收到的结果解密后显示到终端上.
说明:在当前阶段下,数据可以被双向传送
5、SSH的认证方式
5.1 password认证:
客户端向服务端发出 password认证请求,然后将用户名和密码加密后发送给服务器;服务器将该信息解密后得到用户名和密码的明文,与自己设备上保存的用户名和密码进行比较,并返回认证成功或失败的消息。
5.2publickey 认证:
采用数字签名的方法来认证客户端。目前,设备上可以利用RSA和 DSA两种公共密钥算法实现数字签名。
客户端发送包含用户名、公共密钥和公共密钥算法的 publickey 认证请求给服务端。服务器、端对公钥进行合法性检查,如果不合法,则直接发送失败消息;否则,服务器利用数字签名对客户端进行认证,并返回认证成功或失败的消息。
5.3. password-publickey 认证(SSH2.0)
指定该用户的认证方式为 password 和 publickey认证必须同时满足。
说明:客户端版本为 SSH1的用户只要通过其中一种认证即可登录;客户端版本为 SSH2的用户必须两种认证都通过才能登录。
5.4 any认证(SSH2.0)
指定该用户的认证方式可以是 password、 publickey中任意一种。
6、SSH常用命令
6.1 远程登录
ssh 用户名@远程主机ip:首次登陆需要下载对方公钥。
示例:ssh 192.168.1.100
6.2 远程上传
scp [需要上传文件的本地位置] root@远程主机ip:[需要保存在远程主机的路径]:从本地上传文件到远程主机
示例:scp /root/test.sh root@192.168.1.100
6.3 远程复制
scp root@远程主机ip:[远程主机文件绝对路径] [需要保存的本地位置]:从远程主机下载文件到本机
示例:scp root@192.168.1.100:/root/test.sh /root
IT技术分享社区
个人博客网站:https://programmerblog.xyz
文章推荐程序员效率:画流程图常用的工具程序员效率:整理常用的在线笔记软件远程办公:常用的远程协助软件,你都知道吗?51单片机程序下载、ISP及串口基础知识硬件:断路器、接触器、继电器基础知识
操作系统:SSH协议知识介绍相关推荐
- SSL和SSH协议简单介绍。
工作的网络层次 在OSI七层模型中,这两个安全传输协议其实都是建立在应用层上的. (图片来源:Wikipedia) 设计意图及举例 ①.在最初的设计意图中: SSL被设计为加强Web安全传输(HTTP ...
- Linux远程管理协议相关知识介绍
一.什么是远程管理 远程管理,实际上就是计算机(服务器)之间通过网络进行数据传输(信息交换)的过程,与浏览器需要 HTTP 协议(超文本传输协议)浏览网页一样,远程管理同样需要远程管理协议的底层支持. ...
- linux云计算架构师运维笔记-第1天-硬件知识介绍与操作系统部署
linux云计算架构师运维笔记-第1天-硬件知识课程说明 1. 课程知识详细讲解 1.1 服务器硬件知识介绍 1.1.1 硬件设备种类介绍部分 1.1.2 企业服务器运行指标: 1.1.3 服务器种类 ...
- 标定协议之CCP协议基础知识介绍
上一篇<标定协议基础知识介绍>中对标定协议进行了初步的介绍,从这一篇文章开始对CCP标定协议进行相关介绍,本篇将对CCP标定协议相关指令进行介绍. CCP通讯报文定义 CCP标定协议标准中 ...
- SSH协议介绍及远程连接的使用
一.SSH协议基础知识说明 SSH(secure shell)是建立在应用层和传输层基础上的安全协议,目的是通过加密的方式在非安全的网络上提供安全的远程登录和其他服务 两种远程登录模式:用户口令模式和 ...
- 标定协议基础知识介绍
在上一篇<如何实现标定>中介绍了标定工具通过标定协议与控制器进行通讯从而实现标定.在二十世纪九十年代由Audi.BMW.Mercedes-Benz.Volkswagen等相关企业成立了AS ...
- linux操作系统-SSH原理介绍与免密运用与远程命令操作
PS:运用好SSH,对管理众多服务器可以带来极大的便利.当我们从一台服务器访问另一台服务器,我们可以输入密码访问,并不影响效率.但是当我们需要访问多台服务器,或者几十上百台的时候就有点麻烦了.或者对几 ...
- Java 实现 SSH 协议的客户端登录认证方式
摘自:http://blog.sae.sina.com.cn/archives/333/comment-page-1#comment-37391 简介: 本文首先对 SSH 协议的基础知识作以介绍,然 ...
- Java 实现 SSH 协议的客户端登录认证方式--转载
背景 在开篇之前,让我们先对 SSH 协议有个宏观的大致了解,这样更有利于我们对本文的加深了解.首先要提到的就是计算机网络协议,所谓计算机网络协议,简单的说就是定义了一套标准和规则,使得不同计算机之间 ...
最新文章
- windows server 2008设置远程桌面连接最大数量
- 百度开放AI应用学习!
- python小项目-python 的一些小项目
- java 数据库外键查询_oracle中查询所有外键引用到某张表的记录
- poi读取excel导入mysql_poi读取xlsx表格内容并插入到mysql中,OutOfMemoryError
- 打开c盘_为什么你的C盘总是爆满?教你彻底清理C盘空间,瞬间提速50%
- es6—变量的解构赋值
- 起底方舟编译器的引用计数!
- XML:体验学习的乐趣之XML总结
- php前台点击按钮导出excel,php上导出excel表格数据-PHP如何将查询出来的数据导出成excel表格(最好做一个按钮)...
- python中文版-python有中文版吗
- python里的pip list是什么意思_python - 运行pip list,抛出异常,这是什么情况
- Asp.Net 之 Web.config 配置文件详解
- 利用ESP定律进行脱壳 ——合天网安实验室学习笔记
- 佛祖保佑永无BUG 代码 (各种样式)
- 物联网普及率目前第一是韩国
- InstallShield 2010打包安装程序,安装完成后执行某个程序
- jsr303常用注解
- u盘linux反应好慢,U盘加载速度缓慢的原因及解决小技巧
- 飞桨Tracking目标跟踪库开源!涵盖业界主流的VOT算法,精准检测动态目标轨迹...
热门文章
- web 日志分析工具 awstats 简单安装
- You can't specify target table 'tablename' for update in FROM clause的解决方法
- CMOS图像传感器——噪声模型
- 全国职业院校技能大赛软件测试题目,我校喜获2018全国职业院校技能大赛“软件测试”赛项一等奖...
- 手机运行服务器无响应,《最强蜗牛》服务器无响应怎么办 服务器无响应解决方法...
- android gps 锁屏更新坐标_把手机锁屏设置成任意字体,悄悄给男(女)朋友一个惊喜吧...
- linux要求关闭httpd服务,Apache2.4.4的安装及实现service和chkconfig系统控制httpd开启关闭...
- Linux之RPM 软件管理程序
- 数学学习笔记-三角函数
- android 权限动态申请