西安网站建设哪个平台好,新闻 今天,网站竞价怎么做,短视频seo营销SSH的传输层协议#xff08;Transport Layer Protocol#xff09;和用户鉴权协议#xff08;Authentication Protocol#xff09;确保数据的传输安全#xff0c;这里只介绍传输层协议#xff0c;是SSH协议的基础。
本文针对SSH2协议。
1、客户端连接服务器
服务器默认…SSH的传输层协议Transport Layer Protocol和用户鉴权协议Authentication Protocol确保数据的传输安全这里只介绍传输层协议是SSH协议的基础。
本文针对SSH2协议。
1、客户端连接服务器
服务器默认端口22
2、服务器返回ServerHello
SSH-2.0-OpenSSH_8.4p1 Debian-5deb11u3其中 SSH-2.0为协议版本为固定值 OpenSSH_8.4p1为实现SSH服务的软件可自定义。 Debian-5deb11u3为其他注释说明。
格式为协议版本-软件 备注
3、客户端发送ClientHello给服务器
格式同ClientHello一样
4、客户端和服务端确认算法
确认的算法包括HostKey算法密钥交换算法数据加密算法数据MAC算法压缩算法。
客户端和服务端分别告诉对方支持的算法双方根据自身和对方支持的算法确认最后实际应用到SSH协议的算法。
列举一些常用的算法
HostKey算法ssh-ed25519ssh-rsaecdsa-sha2-nistp256ecdsa-sha2-nistp384ecdsa-sha2-nistp521
密钥交换算法curve25519-sha256ecdh-sha2-nistp256ecdh-sha2-nistp384ecdh-sha2-nistp521diffie-hellman-group-exchange-sha256
加密算法chacha20-poly1305aes256-ctr
MAC算法hmac-sha1hmac-sha2-2565、密钥交换
服务端使用密钥交换算法生成共享密钥SharedSecret并使用HostKey算法进行签名。
这一步的签名对安全至关重要。
使用SSH客户端连接服务器时会询问是否接受服务端的HostKey。
客户端只认你接受的HostKey可以防止中间人攻击。双方根据共享密钥生成加密算法的加密/解密密钥以及数据MAC算法算法的密钥。
合适的加密算法对安全也很重要。
一般客户端/服务端实现都会优先选择安全和效率最优的算法。
例如HostKey算法ed25519/ecdsa密钥交换算法ecdh/curve25519加密算法chacha20-poly1305等等。6、完成密钥交换
服务端和户端分别告诉对方使用SSH_NEWKEY消息已经准备好连接。 可以进行后续操作例如用户鉴权SCPSFTPChannel服务等相关数据都会在加密通道里面传输。
7、参考SSH协议标准
The Secure Shell (SSH) Transport Layer Protocol The Secure Shell (SSH) Authentication Protocol The Secure Shell (SSH) Connection Protocol The Secure Shell (SSH) Public Key File Format Diffie-Hellman Group Exchange for the Secure Shell (SSH) Transport Layer Protocol SSH File Transfer Protocol ssh_config ssh_command_arguments