`

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
-------------------------------
分享到:
评论

相关推荐

    SSH(整合)简单登录过程详解.doc

    SSH(整合)简单登录过程详解,SSH整合,struts,hibernate,sping整合

    struts2的ssh手工配置全过程还带一个登陆例子的配置

    struts2的ssh手工配置全过程还带一个登陆例子的配置 struts2的ssh手工配置全过程还带一个登陆例子的配置

    ssh免密登陆

    本图片详细的描述了ssh的免密登陆的流程,快速的理解这一个过程

    ssh框架实例过程(MyEclipse+struts+spring+hibernate整合)

    ssh框架实例(MyEclipse+struts+spring+hibernate整合) 一个小小的登陆工程 初学者这个实例最恰当不过了,里面包含了建立工程的过程 步骤,源工程,

    Python实现SSH远程登陆,并执行命令的方法(分享)

    使用SSH远程登陆到主机,然后执行相应的command即可。 使用Python来实现这些操作就相当简单了。下面是测试code。 代码如下:(code运行环境:python27+eclipse+pydev) import paramiko def sshclient_execmd(...

    ssh整合视频ssh整合视频

    struts+hibernate+spring三个框架的一个整合,从搭建环境,到实现登陆全过程。

    linux Ubuntu下SSH无密码验证配置的方法步骤

    前言 SSH为Secure Shell 的缩写,是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。越来越多的小伙伴们使用远程登录,而ssh安全性无疑是很高的,那么我们...过程如下: 远程主机收到用户的登录请求,把

    JQuery EasyUI+SSH搭建的小程序

    登陆 3.房屋的发布、编辑、删除 注:此工程拿用北风网免费公开课上发布的,不过那个是用maven自动构建的jar包。 这个是我自己手动从相应网站下载的开源的jar包,手动配的,你懂的过程是异常啪啪的出呀,不过最终...

    javaEE_SSH土地档案管理系统设计软件源码+数据库+WORD毕业论文文档.zip

    javaEE_SSH土地档案管理系统设计软件源码+数据库+WORD毕业论文文档: 技术:java、jsp、struts、spring、hibernate 数据库:oracle 集成开发工具:eclipse 目录 摘 要 i Abstract ii 1 绪论 1 1.1 可行性研究编写...

    SSH整合实例下载

    该项目使用Struts1.3+hibernate3.1+Spring2.0整合的,完成了一个的用户登陆验证的过程。

    node-red-contrib-bigssh:使用ssh大节点的远程命令

    节点红色贡献bigssh安装npm install node-red-contrib-bigssh大节点原理有关大节点的详细信息,请参见 。 Big Lib和后续的Big Nodes是为我自己的目的而构建的一系列节点。 它们全部旨在帮助我为生产目的建立完整的...

    毕业设计-基于JSP的新疆人保助贷部贷款申请系统ssh+mysql-设计与实现(源码+论文+视频).zip

    也是一款基于SSH框架技术的网站。 系统功能实现 在管理信息系统的生命周期中,经过了需求分析、系统设计等阶段之后,便开始了系统实施阶段。在系统分析和设计阶段,系统开发工作主要是集中在逻辑、功能和技术设计上...

    ESXI5中添加共享磁盘.doc

    ESX 使用虚拟机做测试是一件非常惬意的事情,但我老是忘记如何添加共享磁盘,这次...SSH登陆到esx主机中 cd到vmfs下的volumes下的datastorage中 vmkfstools -d eagerzeroedthick -a lsilogic -c 20G sharedisk.vmdk

    java 登陆界面有验证码功能

    利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。 传统的网络服务程序,如:ftp、pop和telnet在本质上都是不安全的,因为它们在网络上用明文传送口令和数据,别有用心的人非常容易就可以截获这些口令和数据...

    毕业设计-基于JSP的网络聊天室ssh-设计与实现(源码+论文+视频).zip

    在设计过程中,首先建立了系统的应用模型,然后在此基础上再进行需求分析逐步进行各功能的设计实现。在详细设计时经过不断的修正和完善,经过测试阶段反复调试和验证,最终形成达到了设计要求的可行系统。 系统功能实现...

    Linux使用scp命令进行文件远程拷贝详解

    scp是 secure copy的缩写, scp是Linux系统下基于ssh登陆进行安全的远程文件拷贝命令。Linux的scp命令可以在Linux服务器之间复制文件和目录。 使用语法: scp [参数] [源路径] @IP:/目标路径 scp 参数如下: -1:...

    Linux下sshd服务及服务管理命令详解

    SSH是目前较可靠,专为远程登陆会话和其他网络服务提供安全性的协议。利用SSH协议可以有效防止远程管理过程中的信息泄露问题。 openssh-server 功能:让远程主机可以通过网络访问sshd服务,开始一个安全shell 客户端...

    小白成长之路-ssh服务

    特别是现在云服务大行其道的时候,我们直接面对服务器设备的可能就更低了,在我们的实际工作中,为了服务器的安全我们通常都是远程登陆做管理。如下图所示 在我们远程链接服务器做管理的时候我们需要不断的交互数据...

    ssh自动输入密码自动登录

    借助Expect,我们可以将交互过程写在一个脚本上,使之自动化完成。形象的说,ssh登录,ftp登录等都符合交互的定义。下文我们首先提出一个问题,然后介绍基础知四个命令,最后提出解决方法。 expect中最关键的四个...

    瑞斯康达交换机配置过程

    将电脑和交换机用配置线连接好如使用配置器需安装驱动1点击开始→所有程序→附件→通讯→超级终端图一这个名称可以随便取不重要2图二第一次进入会要求输入区号直接输就可以“连接时使用”要求选择端口端口可以在设

Global site tag (gtag.js) - Google Analytics