SSH協定是建立在不安全的網絡之上的進行遠端安全登陸的協定。它是一個協定族,其中有三個子協定,分别是:
1、傳輸層協定<code>[SSH-TRANS]</code>:提供伺服器驗證、完整性和保密性功能,建立在傳統的TCP/IP協定之上。
2、驗證協定<code>[SSH-USERAUTH]</code>:向伺服器驗證用戶端使用者,有基于使用者名密碼和公鑰兩種驗證方式,建立在傳輸層協定<code>[SSH-TRANS]</code>之上。
3、連接配接協定<code>[SSH-CONNECT]</code>:将加密隧道複用為若幹邏輯信道。它建立在驗證協定之上。

繼續之前,補充一下兩個概念:
1、<code>會話密鑰 key</code>:key是通過用戶端和伺服器之間通過諸如D-H算法協商出來的。
2、<code>公鑰 pub key</code>:pub key成為<code>伺服器主機密鑰server_host_key</code>,用于<code>SSH-TRANS</code>傳輸協定進行伺服器驗證,說白了就是用戶端去驗證伺服器用的
SSH協定握手過程大緻流程如下圖所示:
下面使用Wirdshark進行抓包分析,開啟wireshark抓包,進行一次正常的SSH登入,停止抓包,通過IP過濾出相關的封包如下:
如果将上述封包根據SSH協定運作的流程分析,流程和封包的對應關系如下:
TCP三向交握
版本協定交換
密鑰協商
在協商階段用戶端和用戶端互相告知自己支援的加密方法:
确定加密方法後,交換公鑰:
加密通信
如果是通過密碼登入,SSH就會采用這種自動協商密鑰進行非對稱加密通信。可以看到此後的封包全部為加密封包。
大概可以看出是以 <code>New Keys</code> 為界,區分密鑰協商和加密通信。
内部加密的原理究竟是什麼?這一點還需後期繼續探索。
參考文獻
SSH Official: https://www.ssh.com/ssh/
OpenSSH:https://www.openssh.com/
SSH Wikipedia:https://zh.wikipedia.org/wiki/Secure_Shell
OpenSSH Wikipedia:https://zh.wikipedia.org/wiki/OpenSSH
--------------------- Author:
FryteaTitle: OpsnSSH抓包分析 | SSH協定分析
Copyright: This work by
TL-Song is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.