`

ssh详细登录过程

 
阅读更多

原文: http://blog.csdn.net/gsnumen/article/details/7293266

 

ssh详细登录过程

 

首先说下相关概念:

明文:需要秘密传送的消息。
密文:明文经过密码变换后的消息。
加密:由明文到密文的变换。
解密:从密文恢复出明文的过程。
破解:非法接收者试图从密文分析出明文的过程。
加密算法:对明文进行加密时采用的一组规则。
解密算法:对密文进行解密时采用的一组规则。
密钥:加密和解密时使用的一组密码信息。
对称加密:是采用单钥密码系统的加密方法,使用同一密钥对信息进行加密和解密的加密方法。
非对称加密:需要两个密钥:公共密钥和私有密钥,它们成对出现,公钥加密的数据有且只有私钥能解密,私钥加密的数据有且只有公钥解密,相对于“对称加密”,“非对称加密”加密方法加密和解密使用不同的密钥,所以叫“非对称加密”加密方法。
对称加密和非对称加密的区别:在于加密和解密是否使用的同一个密钥。
 
加密、身份认证、数字签名认证:
     加密:将数据资料加密,使得非法用户即便获取加密后的资料,也无法获取正确的资料内容,所以数据加密可以保证数据防止监听攻击;其重点在于数据的安全性。
    身份认证:判断某身份的真实性,确认身份后,系统才可以依不同的身份赋予不同的权限;其重点在于用户的真实性。
    数字签名认证:首先"数字签名"就是附加在数据单元上的一些数据,或是对数据单元所作的密码变换。这种数据或变换允许接收者判断数据的来源和数据的完整性,防止被伪造篡改。数字签名认证侧重于把保证数据的完整性,防止被伪造和篡改。
 
 

认证原理: 

有2种认证方式:

    基于账号和口令的验证方式 和 基于公钥和私钥的验证方式

ssh的登录过程分为5个阶段

    1、版本号协商阶段
    2、密钥和算法协商阶段
    3、认证阶段
    4、会话请求阶段
    5、会话交互阶段

1、版本号协商阶段

    服务端打开端口22,等待客户连接。
    客户端向服务端发起TCP连接,连接建立后,服务端向客户端发送第一个报文,包括版本标志字符串,格式为“协议版本号 次协议版本号 软件版本号”。
    客户端收到报文后,解析协议版本号,如果服务端的协议版本号比自己的低,且客户端能支持服务端的低版本,就使用服务端的协议号,否则使用自己的协议版本号。
    客户端回复服务端一个报文,包含了客户端决定使用的协议版本号。
    服务端比较客户端发过来的版本号,决定是否能同客户端交互。
    如果协商成功,就进入密钥和算法协商阶段。否则服务端断开TCP连接。
 

2、密钥和算法协商阶段

    服务端和客户端分别发送算法协商报文给对方,报文中包含自己支持的公钥算法列表、加密算法列表、消息验证码算法列表、压缩算法列表等。
    服务端和客户端根据对方和自己支持的算法得出最终使用的算法。
    服务端和客户端利用DH交换算法、主机密钥对等参数,生成会话密钥和会话ID。
        c公 客户端公钥
        c密 客户端密钥
        s公 服务端公钥
        s密 服务端密钥
在版本号协商阶段完成后:
    服务端将 s公 发送给客户端。
    服务端生成会话ID ,设为 id ,发送给客户端。
    客户端生成会话密钥,设为 key ,并计算 res = id 异或 key。
    客户端将 res 用 s公 进行加密,将结果发送给服务端。
    服务端用 s密 进行解密,得到 res。
    服务器计算 res 异或 id,得到 key。
    至此服务端和客户端都知道了会话密钥和会话ID,以后的数据传输都使用会话密钥进行加密和解密。
 

3、认证阶段

基于账号和口令的验证方式:
    客户端使用密钥和算法协商阶段生成的会话密钥加密账号、认证方法、口令,将结果发送给服务器。
    服务端使用获得的会话密钥解密报文,得到账号和口令。
    服务端对这个账号和口令进行判断,如果失败,向客户端发送认证失败报文,其中包含了可以再次认证的方法列表。
    客户端从认证方法列表中选择一种方法进行再次认证。
    这个过程反复进行,直到认证成功或者认证次数达到上限,服务端关闭本次TCP连接。
基于公钥和私钥的验证方式:
    使用ssh-keygen程序生成公钥 id_dsa.pub 和私钥 id_dsa,一般是在客户端上生成,然后把 id_dsa.pub 通过某种方式发送给服务端。
    服务端放在将要远程登录过来的那个账号的目录的.ssh目录下面。
    客户端使用密钥和算法协商阶段生成的会话密钥加密账号、认证方法、id_dsa.pub,将结果发送给服务端。
    服务端使用会话密钥解密报文,得到账号、id_dsa.pub。    服务端在这个账号的目录的.ssh目录下找对应的公钥,如果没有找到,发送失败消息给客户端,如果找到,比较客户发送过来的这个公钥和找到的公钥,如果内容相同,服务端生成一个随机的字符串,简称“质询”,然后使用找到的公钥加密这个质询,然后使用会话密钥再次加密。
    服务端把这个双重加密的数据发送给客户端。
    客户端使用会话密钥解密报文,然后使用id_dsa再次解密数据,得到质询。
    客户端使用会话密钥加密质询,发送给服务端。
    服务端使用会话密钥解密报文,得到质询,判断是不是自己生成的那个质询,如果不相同,发送失败消息给客户端,如果相同,认证通过。
 

参考:

 
 
 
 
 
------------- end -------------
From: GS
-------------------------------
分享到:
评论

相关推荐

    ubuntu的SSH远程登陆

    本文将基于提供的文件内容,详细阐述如何在Ubuntu系统上配置并使用SSH服务。 #### 二、SSH服务安装与配置 **1. 更新软件包列表** 为了确保安装最新版本的软件包,在安装SSH服务之前,首先需要更新Ubuntu的软件包...

    ssh模拟登陆练习

    6. SSH模拟登陆:在练习中,可能需要编写Java代码来模拟SSH登陆过程,包括建立连接、进行身份验证、执行远程命令等。这将涉及到JSch库的API调用和参数配置。 7. 错误处理和调试:在模拟登陆过程中,可能会遇到各种...

    sshlogin.rar SSH整合登陆

    SSH整合登陆是Java开发中常见的一个技术点,主要用于构建基于Web的应用系统,它结合了Spring、Struts2和Hibernate三个开源框架,形成了高效且强大的后端开发解决方案。在这个"SSH整合登陆"项目中,我们将探讨如何在...

    Hadoop ubuntu 9.10 下的 SSH 免登陆

    本文将详细阐述如何在Ubuntu 9.10操作系统下设置SSH免登陆,以及相关的知识点。 首先,SSH是用于网络服务的安全协议,它允许用户通过不安全的网络进行加密的远程登录和其他操作。在Hadoop环境中,由于通常涉及多个...

    myeclipse下ssh登陆

    ### MyEclipse 下 SSH 登陆知识点详解 #### 一、SSH 整合概述 SSH(Struts + Spring + Hibernate)是一种流行的 Java Web 开发模式,它结合了三个强大的开源框架来构建高性能、易于维护的企业级应用程序。本文档将...

    ssh用户登陆代码

    SSH用户登录的基本过程包括以下步骤: 1. **公钥认证**:SSH支持多种身份验证方式,其中最安全的是公钥认证。用户在本地计算机上生成一对密钥——公钥和私钥。公钥存储在远程服务器的`.ssh/authorized_keys`文件中...

    ssh+登陆程序

    在这个“ssh+登陆程序”的主题中,我们将深入探讨SSH的基本原理、实现方式以及如何创建一个简单的SSH登录程序。 SSH的核心功能是提供加密的网络通信,确保数据在传输过程中不被窃取或篡改。它通过公钥加密技术和...

    SSH远程登陆工具

    这些工具提供了图形化的界面,简化了SSH的配置和连接过程。用户需要知道远程服务器的IP地址或域名,以及合法的用户名。连接成功后,用户可能还需要输入密码或使用密钥对进行身份验证。 **SSH密钥对的生成和使用** ...

    telnet和ssh登陆验证

    2. SSH登陆验证: - 客户端向服务器的22号端口发起SSH连接请求。 - 服务器返回公钥,客户端检查是否信任该公钥,如果是首次连接,需要用户确认。 - 用户进行身份认证,可以选择密码或密钥对方式。如果使用密钥对...

    SSH经典登陆 功能不错的

    SSH经典登陆是指通过SSH协议进行的身份验证和会话建立过程,确保了数据传输的安全性。 首先,SSH的核心功能是加密网络通信,包括命令行接口的终端仿真、文件传输以及各种网络服务。它使用公钥基础设施(PKI)来实现...

    java linux ssh登陆

    这里,我们将会详细探讨Java如何通过SSH连接到Linux系统以及相关的关键概念和技术。 首先,SSH是一种网络协议,用于在不安全的网络上提供安全的远程登录和其他服务。它通过加密来保护数据传输,防止中间人攻击。在...

    免密码自动登录SSH(免密登陆SSH)_Shell_下载.zip

    本教程将详细解释如何实现SSH免密码登录,并以`autossh`为例,介绍一个用于保持SSH连接的工具。 首先,我们需要理解SSH的基础知识。SSH(Secure Shell)是一种网络协议,用于安全地远程控制和传输数据。默认情况下...

    SSH.rar_SSH登陆_ssh_ssh登录界面

    这个"SSH.rar_SSH登陆_ssh_ssh登录界面"的压缩包文件内容可能包含了一组有关SSH登录界面的练习题或者教程,旨在帮助用户理解和掌握SSH的使用。 SSH的主要功能是加密网络通信,确保数据在传输过程中不被窃取或篡改。...

    ssh登陆软件Windows 登陆Linux

    7. **安全性**:SSH使用加密技术确保数据在传输过程中的安全,防止中间人攻击和数据被窃取。 在使用SSH Secure Shell Client-3.2.9.exe这个软件时,首先需要安装它。安装过程中可能需要管理员权限。安装完成后,...

    SSH整合登陆注册源码(数据库+图解)

    总的来说,SSH整合登陆注册源码是一个典型的Java Web项目,涵盖了前端用户交互、后端业务逻辑处理和数据库操作。通过学习这个源码,开发者可以深入理解SSH框架的集成和实际应用,同时提高在登录注册功能设计上的能力...

    SSH登陆实例文件和工程

    SSH登陆过程通常包括以下几个步骤: 1. **公钥认证**:SSH支持多种身份验证方法,其中最常见的是公钥认证。用户需要生成一对密钥——公钥和私钥。公钥存储在远程服务器上,而私钥保留在本地计算机上。当用户尝试...

    eNSP配置SSH实验

    本实验主要讲解了eNSP配置SSH环境的搭建过程,包括拓扑图的设计、静态路由的配置、Telnet和SSH认证的设置等。 一、拓扑图设计 在本实验中,我们设计了一个简单的拓扑图,包括三个路由器AR1、AR2和AR3,每个路由器...

    一个SSH的登陆注册实例

    首先,让我们来详细了解一下SSH框架中的每个组件: 1. **Struts2**:这是一个MVC(模型-视图-控制器)框架,负责处理HTTP请求,维护应用程序的业务逻辑与视图之间的解耦。在登录注册实例中,Struts2会处理用户的...

    5个用SSH2做登陆注册的例子

    5. **SSH2简单登陆程序.zip** 最后,这个例子可能是一个简化版的SSH2登录程序。它可能只关注用户身份验证,不涉及注册功能。用户可能需要预先在服务器上设置好账户,然后使用SSH2协议进行登录。 这些例子对于学习...

Global site tag (gtag.js) - Google Analytics