刪除wordpress標(biāo)志鶴崗網(wǎng)站seo
SSH的傳輸層協(xié)議(Transport Layer Protocol)和用戶鑒權(quán)協(xié)議(Authentication Protocol)確保數(shù)據(jù)的傳輸安全,這里只介紹傳輸層協(xié)議,是SSH協(xié)議的基礎(chǔ)。
本文針對(duì)SSH2協(xié)議。
1、客戶端連接服務(wù)器
服務(wù)器默認(rèn)端口22
2、服務(wù)器返回ServerHello
SSH-2.0-OpenSSH_8.4p1 Debian-5+deb11u3
,其中:
SSH-2.0
為協(xié)議版本,為固定值
OpenSSH_8.4p1
為實(shí)現(xiàn)SSH服務(wù)的軟件,可自定義。
Debian-5+deb11u3
為其他注釋說(shuō)明。
格式為:協(xié)議版本-軟件 備注
3、客戶端發(fā)送ClientHello給服務(wù)器
格式同ClientHello一樣
4、客戶端和服務(wù)端確認(rèn)算法
確認(rèn)的算法包括:HostKey算法,密鑰交換算法,數(shù)據(jù)加密算法,數(shù)據(jù)MAC算法,壓縮算法。
客戶端和服務(wù)端分別告訴對(duì)方支持的算法,雙方根據(jù)自身和對(duì)方支持的算法確認(rèn)最后實(shí)際應(yīng)用到SSH協(xié)議的算法。
列舉一些常用的算法:
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-256
5、密鑰交換
服務(wù)端使用密鑰交換算法
生成共享密鑰SharedSecret
,并使用HostKey算法
進(jìn)行簽名。
這一步的簽名對(duì)安全至關(guān)重要。
使用SSH客戶端連接服務(wù)器時(shí),會(huì)詢問(wèn)是否接受服務(wù)端的HostKey。
客戶端只認(rèn)你接受的HostKey,可以防止中間人攻擊。
雙方根據(jù)共享密鑰
生成加密算法
的加密/解密
密鑰以及數(shù)據(jù)MAC算法
算法的密鑰。
合適的加密算法對(duì)安全也很重要。
一般客戶端/服務(wù)端實(shí)現(xiàn)都會(huì)優(yōu)先選擇安全和效率最優(yōu)的算法。
例如:HostKey算法ed25519/ecdsa,密鑰交換算法ecdh/curve25519,加密算法chacha20-poly1305等等。
6、完成密鑰交換
服務(wù)端和戶端分別告訴對(duì)方(使用SSH_NEWKEY消息)已經(jīng)準(zhǔn)備好連接。
可以進(jìn)行后續(xù)操作,例如用戶鑒權(quán),SCP,SFTP,Channel服務(wù)等,相關(guān)數(shù)據(jù)都會(huì)在加密通道里面?zhèn)鬏敗?/p>
7、參考SSH協(xié)議標(biāo)準(zhǔn)
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