SSH协议详解

简介

SSH只是一个协议,基于这个协议有不同的实现,这些实现中有开源,也有收费。

原理

普通网络通信一般是明文通信,数据容易被中间人拦截并且解析,而SSH协议则提供了基于内容加密服务。

流程:

第一种:口令验证登陆

        (1)客户端向远程主机发起登陆链接请求。

        (2)远程主机收到用户的登录连接请求,然后把自己的公钥发给客户端。

        (3)客户端收到这个公钥,并使用这个公钥,将登录密码加密后,发送到远程主机。

        (4)远程主机用自己的私钥,解密登录密码,并验证该密码与当前要登陆的用户密码是否匹配,匹配就同意用户登录。

        缺陷:口令验证,主动权在客户端,真正的远程主机可能会被拦截掉,客户端访问的可能是伪装的远程主机,此时客户端收到的密钥是伪装机的,客户端发送加密后的密码后,会被伪装机通过私钥解密,此时伪装机就获取到了真实远程主机的账密,那么真实远程主机的安全就受到了严重威胁。

        

第二种:密钥验证登陆

        前提:客户端在本地生成非对称密钥(公钥、私钥)。并且将公钥放到了远程主机的.ssh/authorized_keys文件中。

        (1)客户端向远程主机发起登陆连接请求,附带信息

                备注:网上对于附带信息,我目前看到两个版本,一个是:ip,用户名;一个是:公钥信息。对于第一种,我是肯定不赞同,客户端物理位置不定,Ip会变,而且公钥信息中根本没有IP,用户名等信息,所以用IP和用户名在远程主机中定位公钥肯定不行;第二版本我比较赞同,但是目前还有待验证。

        (2)远程主机根据附带的信息定位到客户端对应的公钥,然后生成一个随机串并用该公钥加密,然后将生成的加密串发送给客户端。

        (3)客户端收到远程主机送来的加密串,然后用自己的私钥解密,再将解密后的字符串送给远程主机。

        (4)远程主机接收到解密后的字符串,然后跟自己最初生成的字符串作比较,一样则校验成功,允许与客户端建立登陆链接。

        

登陆命令行
ssh -p port user@host
user表示远程服务的登录用户名,host表示远程ip ,port表示远程服务的端口号(默认为22,可省略)
---------------------
作者:Mote_
来源:CSDN
原文:https://blog.csdn.net/dreamwbt/article/details/80280557
版权声明:本文为博主原创文章,转载请附上博文链接!

原文地址:https://www.cnblogs.com/ricksteves/p/10263440.html