首页 > 编程知识 正文

ssh 握手,基于ssh协议的命令

时间:2023-05-03 17:32:38 阅读:266850 作者:1165

简介

ssh通过创建安全隧道来实现ssh客户端与服务器之间的连接,
它的主要用途是连接远程服务器然后在上面执行指令。

协议

ssh协议主要由三部分组成:

传输层协议:主要负责认证服务器、加密数据、确保数据完整性用户身份验证协议:负责认证使用者是否是ssh服务器的用户连接协议:将加密的信息通道改成若干个逻辑通道 传输层协议


今天主要讲一下传输层协议。

建立连接

sever收到来自client发送过来的请求后,先进行三次握手,建立tcp连接,下面给出我使用wireshark抓到的包

算法协商、版本协商

双方发送自己所支持的版本号以及算法,协商确定版本及算法,若成功则继续,否则断开连接



密钥交换

client根据server发送过来的数据生成一对密钥,将公钥发送给server


其中有一个e字段,这个就是client所生成的公钥
server也会生成一对密钥,并且将自己的公钥与client发送过来的公钥一起生成共享密钥,并且会将自己的临时公钥以及host-key,还有server会收集双方的临时公钥、共享密钥、host-key再加上一定的数据例如:server和client的版本字符串,对这些数据使用之前它们协商好的哈希算法计算其哈希值,然后使用自己的私钥对其签名生成signature,然后将这些值一起发送给client

client收到后会通过host-key先验证服务器的身份,然后将其保存到本地文件夹中,再使用server发送过来的临时公钥生成共享密钥,再加密签名,将其结果与自己所计算的哈希值进行比较,验证数据时没有问题的,这样的话整个密钥协商环节就结束了。

一旦建立了加密传输层并且验证了server的身份,client就必须进行身份验证,主要有两种方式:

密码身份验证:主要就是加密密码进行传输密钥对认证:客户端生成密钥对然后将公钥发送给server,server将其存储起来并生成对应的id,将id返回给client,之后client则可以通过id进行验证server是否存在自己的公钥,进而验证身份。 总结

我通过wireshark可以很好的看到密钥协商具体过程的数据,让我更好的去理解这个过程,但是我的目的是去提取过程中的数据,到目前还没有找到相应的解决办法。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。