远程管理通道安全SSH协议主机验证过程

可以使用SSH协议进行远程管理通道安全保护,其中涉及的主要安全功能包括主机验证、数据加密性和数据完整性保护。

这里要注意的是【主机验证】和【身份验证】的区别,主机验证是客户端确认所访问的服务端是目标访问对象,比如从从客户端A(192.168.3.1)连接到服务端B(192.168.3.133)上,需要验证服务端B是真实的。当主机验证通过后,主机验证通过后,将进入身份验证阶段。SSH支持多种身份验证机制,它们的验证顺序如下:gssapi-with-mic,hostbased,publickey,keyboard-interactive,password,但常见的是密码认证机制(password)和公钥认证机制(public key)。

SSH客户端若是首次登录或者例如在windows注册表中删除【计算机\HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\SshHostKeys】中对应服务器端host key值。(例如Putty)使用ssh登录服务器,会弹出如下提示:

The host key is not cached for this server:

192.168.3.133 (port 22)

You have no guarantee that the server is the computer you think it is.

The server's ssh-ed25519 key fingerprint is:

ssh-ed25519 255 SHA256:gFoFqs17V915WdaNspPRsCPu8g9McWt5Hduo6RLhK5I

If you trust this host, press "Accept" to add the key to PuTTY's cache and carry on connecting.

If you want to carry on connecting just once, without adding the key to the cache, press "Connect Once".

If you do not trust this host, press "Cancel" to abandon the connection.

打开more info可以看到

Full text of host's public key

ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAxMDpul0HDFVD4NAYw8rk0Ex1bDGsqWCDALE0FBzajw

SHA256 fingerprint gFoFqs17V915WdaNspPRsCPu8g9McWt5Hduo6RLhK5I

MD5 fingerprint 13:9d:92:62:1a:ca:7e:77:f7:ab:89:2e:f3:a0:1f:20

点击accept,在windows注册表中就会新增一个条目,数据值为

0x6e326c40573f5fffb8224daceab4ac24050a609ff50ce518e4a27cadc52a848d,0x70a8cd4141130b300896ca1ac356c7044dae3c8c010d3e54c570d0a59b0e4c0c

后续,在客户端将不再出现之前的提示,而是获得到从服务端B发来的公钥后与保持在本地的的公钥指纹进行比对,如果一致则验证成功。

此时,我们可以看下公钥及公钥指纹的对应关系,具体如下:

Base64编码服务端公钥(在客户端的提示窗口中可以找到,或者在服务端/etc/ssh目录中)

AAAAC3NzaC1lZDI1NTE5AAAAIAxMDpul0HDFVD4NAYw8rk0Ex1bDGsqWCDALE0FBzajw

对应HEX编码服务端公钥(base64 to hex)

0000000B7373682D65643235353139000000200C4C0E9BA5D070C5543E0D018C3CAE4D04C756C31ACA9608300B134141CDA8F0

对服务端公钥做SHA256 hash计算得到

805A05AACD7B57DD7959D68DB293D1B023EEF20F4C716B791DDBA8E912E12B92

转base64得到gFoFqs17V915WdaNspPRsCPu8g9McWt5Hduo6RLhK5I=,与putty窗口提示的SHA256公钥指纹一致。

对服务端公钥做MD5 hash计算得到139D92621ACA7E77F7AB892EF3A01F20,与putty窗口提示的MD5公钥指纹一致。

最后,通过抓包来看下服务端B的公钥是在哪条消息发功给客户端的,具体抓包信息如下。

在wireshark中查找0C4C十六进制数值,查找到在server发出的Key Exchange Reply消息中。可以看到EdDSA public key字段中的内容与HEX编码的公钥信息标黄部分完全一致,所以服务端公钥就是在此消息中完成发送给客户端的。

那么【0000000B7373682D6564323535313900000020】这部分是什么呢?把HEX转为ASCII码就是ssh-ed25519,也就是公私密钥对的生成算法。

相关推荐
Hello.Reader6 小时前
Flink ZooKeeper HA 实战原理、必配项、Kerberos、安全与稳定性调优
安全·zookeeper·flink
智驱力人工智能6 小时前
小区高空抛物AI实时预警方案 筑牢社区头顶安全的实践 高空抛物检测 高空抛物监控安装教程 高空抛物误报率优化方案 高空抛物监控案例分享
人工智能·深度学习·opencv·算法·安全·yolo·边缘计算
数据与后端架构提升之路7 小时前
论系统安全架构设计及其应用(基于AI大模型项目)
人工智能·安全·系统安全
市场部需要一个软件开发岗位8 小时前
JAVA开发常见安全问题:Cookie 中明文存储用户名、密码
android·java·安全
lingggggaaaa8 小时前
安全工具篇&动态绕过&DumpLsass凭据&Certutil下载&变异替换&打乱源头特征
学习·安全·web安全·免杀对抗
凯子坚持 c8 小时前
CANN-LLM:基于昇腾 CANN 的高性能、全功能 LLM 推理引擎
人工智能·安全
QT.qtqtqtqtqt9 小时前
未授权访问漏洞
网络·安全·web安全
ba_pi12 小时前
每天写点什么2026-02-04(2.1)信息安全
安全·web安全
田井中律.12 小时前
【无标题】
ssh
枷锁—sha13 小时前
Burp Suite 抓包全流程与 Xray 联动自动挖洞指南
网络·安全·网络安全