整个通讯过程中,经过下面几个阶段协商实现认证连接。
第一阶段:
由客户端向服务器发出 TCP 连接请求。TCP 连接建立后,客户端进入等待,服务器向客户端发送第一个报文,宣告自己的版本号,包括协议版本号和软件版本号。协议版本号由主版本号和次版本号两部分组成。它和软件版本号一起构成形如:
"SSH-<主协议版本号>.<次协议版本号>-<软件版本号>\n"
的字符串。其中软件版本号字符串的最大长度为40个字节,仅供调试使用。客户端接到报文后,回送一个报文,内容也是版本号。客户端响应报文里的协议版本号这 样来决定:当与客户端相比服务器的版本号较低时,如果客户端有特定的代码来模拟,则它发送较低的版本号;如果它不能,则发送自己的版本号。当与客户端相比 服务器的版本号较高时,客户端发送自己的较低的版本号。按约定,如果协议改变后与以前的相兼容,主协议版本号不变;如果不相兼容,则主主协议版本号升高。
服务器接到客户端送来的协议版本号后,把它与自己的进行比较,决定能否与客户端一起工作。如果不能,则断开TCP 连接;如果能,则按照二进制数据包协议发送第一个二进制数据包,双方以较低的协议版本来一起工作。到此为止,这两个报文只是简单的字符串,你我等凡人直接 可读。
第二阶段:
协商解决版本问题后,双方就开始采用二进制数据包进行通讯。由服务器向客户端发送第一个包,内容为自己的 RSA主机密钥(host key)的公钥部分、RSA服务密钥(server key)的公钥部分、支持的
加密方 法、支持的认证方法、次协议版本标志、以及一个 64 位的随机数(cookie)。这个包没有加密,是明文发送的。客户端接收包后,依据这两把密钥和被称为cookie的 64 位随机数计算出会话号(session id)和用于加密的会话密钥(session key)。随后客户端回送一个包给服务器,内容为选用的加密方法、cookie的拷贝、客户端次协议版本标志、以及用服务器的主机密钥的公钥部分和服务密 钥的公钥部分进行加密的用于服务器计算会话密钥的32 字节随机字串。除这个用于服务器计算会话密钥的 32字节随机字串外,这个包的其他内容都没有加密。之后,双方的通讯就是加密的了,服务器向客户端发第二个包(双方通讯中的第一个加密的包)证实客户端的 包已收到。
第三阶段:
双方随后进入认证阶段。可以选用的认证的方法有:
(1) ~/.rhosts 或 /etc/hosts.equiv 认证(缺省配置时不容许使用它);
(2) 用 RSA 改进的 ~/.rhosts 或 /etc/hosts.equiv 认证;
(3) RSA 认证;
(4) 口令认证。
如果是使用 ~/.rhosts 或 /etc/hosts.equiv 进行认证,客户端使用的端口号必须小于1024。
认证的第一步是客户端向服务器发 SSH_CMSG_USER 包声明用户名,服务器检查该用户是否存在,确定是否需要进行认证。如果用户存在,并且不需要认证,服务器回送一个SSH_SMSG_SUCCESS 包,认证完成。否则,服务器会送一个 SSH_SMSG_FAILURE 包,表示或是用户不存在,或是需要进行认证。注意,如果用户不存在,服务器仍然保持读取从客户端发来的任何包。除了对类型为 SSH_MSG_DISCONNECT、SSH_MSG_IGNORE 以及 SSH_MSG_DEBUG 的包外,对任何类型的包都以 SSH_SMSG_FAILURE 包。用这种方式,客户端无法确定用户究竟是否存在。
如果用户存在但需要进行认证,进入认证的第二步。 客户端接到服务器发来的 SSH_SMSG_FAILURE 包后,不停地向服务器发包申请用各种不同的方法进行认证,直到时限已到服务器关闭连接为止。时限一般设定为 5 分钟。对任何一个申请,如果服务器接受,就以 SSH_SMSG_SUCCESS 包回应;如果不接受,或者是无法识别,则以 SSH_SMSG_FAILURE 包回应。
第四阶段:
认证完成后,客户端向服务器提交会话请求。服务器则进行等待,处理客户端的请求。在这个阶段,无论什么请求只要成功处理了,服务器都向客户端回应 SSH_SMSG_SUCCESS包;否则回应 SSH_SMSG_FAILURE 包,这表示或者是服务器处理请求失败,或者是不能识别请求。会话请求分为这样几类:申请对数据传送进行压缩、申请伪终端、启动 X11、
TCP/IP 端口转发、启动认证代理、运行 shell、执行命令。到此为止,前面所有的报文都要求 IP 的服务类型(TOS)使用选项 IPTOS_THROUGHPUT。
第五阶段:
会话申请成功后,连接进入交互会话模式。在这个模式下,数据在两个方向上双向传送。此时,要求 IP 的服务类型(TOS)使用 IPTOS_LOWDELAY 选项。当服务器告知客户端自己的退出状态时,交互会话模式结束。
(注意:进入交互会话模式后,加密被关闭。在客户端向服务器发送新的会话密钥后,加密重新开始。用什么方法加密由客户端决定。)
分享到:
相关推荐
这个压缩包“SSH协议相关资料和软件”显然包含了一些关于SSH协议的学习资源和可能的实施工具,比如`setupssh.exe`,这很可能是一个SSH客户端或服务器的安装程序。下面将详细讨论SSH协议及其相关知识。 SSH协议最初...
SSH协议的启动过程始于客户端发起一个TCP连接请求到服务器。一旦TCP连接建立,服务器会发送一个包含其协议版本号(主版本号和次版本号)和软件版本号的报文。客户端回应同样的报文,但可能会选择与服务器支持的最低...
SSH(Secure Shell)是一种网络协议,用于在不安全的网络上提供安全的远程登录和其他安全网络服务。在Linux系统中,SSH是管理员和用户进行远程控制、文件传输等操作的标准工具。本文将深入探讨SSH的基本概念、工作...
在加密阶段,SSH使用强大的加密算法,如AES,对传输的数据进行加密,保证通信的机密性。 SSH的组织架构主要包括以下几个组件: 1. **客户端**:SSH客户端是用户用来连接到远程服务器的软件,它负责发起连接请求,...
对SSH协议的深入分析能够揭示出在连接建立阶段可获取的重要信息,这些信息有助于对SSH隧道中的应用层协议进行识别。 3. 流量监控技术 文档中提到了流量监控基础架构的扩展功能,这些功能能够分析从SSH连接中获取的...
- **确保无缝连接:** 通信协议与标准确保不同设备间的无缝连接,使信息能够在不同类型的设备间准确无误地传递。 - **提高通信效率:** 通过标准化的数据格式和传输规则,减少数据传输中的错误率,提升整体通信系统的...
1. **版本号协商阶段**:在连接建立之初,客户端和服务器需要通过版本号协商确定使用哪个版本的SSH协议。 - 客户端向服务器发起TCP连接请求,服务器响应并发送包含自身版本号的信息。 - 客户端解析此信息,并根据...
- **连接建立过程**: SSH连接的建立分为五个主要阶段。 1. **版本号协商**: 双方协商确定使用的SSH版本。 2. **密钥交换**: 选择用于保护会话的加密密钥。 3. **认证**: 客户端通过用户名/密码或公钥等方式验证...
SSH协议提供了一种安全的远程登录方式,可以在不安全的网络上进行安全通信。 #### 三、Solaris SSH安装与配置 ##### 1. 下载并安装SSH 首先需要下载SSH软件包。可以从官方网站或其他可靠的源下载,例如: ``` ...
SSH协议的设计目标是替代传统的telnet、rlogin等不安全的通信方式,通过加密技术确保数据传输过程中的隐私和完整性。在本文中,我们将深入探讨SSH协议的实现,以及与C语言相关的实现细节。 SSH协议由两部分组成:...
使用 PuTTY 和 OpenSSH:PuTTY 是 Windows 上经典的免费 SSH 连接工具,通常用于使用 SSH 协议远程登录设备,最新版本可以在 PuTTY 官网下载。OpenSSH 是 SSH 协议的开源实现,支持在 Unix 操作系统上运行,最新版本...
SSH(Secure Shell)是一种网络协议,用于在不安全的...通过深入源码,你可以学习到加密算法、网络通信协议、身份验证机制等核心概念,同时也能增强你对MySQL数据库管理的理解。这将对你的IT职业生涯产生积极的影响。
"lib"目录则包含了编译好的SSH.lib静态库文件,这是实际在编译链接阶段使用的。 使用SSH.lib的关键步骤如下: 1. **配置环境**:将include目录添加到项目的包含目录(Include Directories)中,这样编译器才能找到...
SSH协议框架由多个层次组成,包括传输层协议、TCP连接协议、AAA远程用户认证协议、数据机密性、服务器认证信息完整性等。在SSH连接建立过程中,经历了版本号协商、密钥和算法协商、认证和会话请求四个阶段。在这些...
1. **安全性**:SSH2提供了加密的网络连接,保护数据免受窃听和篡改,确保网络通信的安全性。 2. **身份验证**:SSH2支持多种身份验证方式,如密码、公钥/私钥对、信任主机等,以验证用户或服务器的身份。 3. **...
SSH协议的工作原理基于公钥加密技术,分为两个主要阶段:身份验证和数据加密。在身份验证阶段,客户端向服务器发送自己的公钥,服务器验证公钥的有效性后,双方建立起安全连接。之后,所有传输的数据都会被加密,...
SSH基于客户端-服务器架构,其主要工作流程包括身份验证、密钥交换和加密通信三个阶段: 1. **身份验证**:客户端连接到服务器时,会发送一个公钥请求。服务器回应其标识信息,客户端验证这些信息是否匹配已知的...
握手阶段建立连接,身份验证确保双方身份正确,密钥协商则确定后续通信的加密算法。 三、SSH配置 3.1 安装SSH 在Linux系统中,通常使用`sudo apt-get install openssh-server`(Ubuntu/Debian)或`yum install ...
SSH2协议提供了加密的网络通信,包括身份验证、加密传输、压缩和端口转发等功能。它主要由两个阶段组成:握手阶段和数据传输阶段。握手阶段用于建立安全连接并进行身份验证,数据传输阶段则对传输的数据进行加密和...