远程管理通道安全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,也就是公私密钥对的生成算法。

相关推荐
星幻元宇VR6 小时前
VR卡丁车|让交通安全教育更有趣的沉浸体验
安全·vr·虚拟现实
quxuexi10 小时前
网络通信安全与可靠传输:从加密到认证,从状态码到可靠传输
java·安全·web
dashizhi201510 小时前
共享文件禁止拖动本地磁盘、共享文件禁止另存为、禁止打印共享文件、禁止复制共享文件的方法
运维·服务器·网络·安全·电脑
网教盟人才服务平台10 小时前
AI 全面重塑网络攻防生态,智能安全进入深度对抗时代
网络·人工智能·安全
渣渣馬11 小时前
shell的if多条件
git·ssh
qq_2602412312 小时前
将盾CDN:网络安全人才培养的困境与破局之道
安全·web安全
vortex513 小时前
构建可审计、可分层、可扩展的SSH身份管理体系
网络·ssh·php
Bruce_Liuxiaowei15 小时前
2026年4月第2周网络安全形势周报(3)
网络·安全·web安全
proware15 小时前
海思3403与3559安全启动
linux·安全·tee
瘾大侠15 小时前
HTB - Silentium
安全·web安全·网络安全