操作系統(tǒng):SSH協(xié)議知識介紹
今天給大家分享SSH協(xié)議相關(guān)的知識介紹,希望對大家能有所幫助!
1、SSH協(xié)議概念介紹
SSH(Secure Shell)安全外殼協(xié)議,是一種建立在應(yīng)用層基礎(chǔ)上的安全協(xié)議,通過對密碼進行加密傳輸驗證,可以在不安全的網(wǎng)絡(luò)中對網(wǎng)絡(luò)服務(wù)提供安全的傳輸環(huán)境,實現(xiàn)SSH客戶端和SSH服務(wù)器端的連接,所以SSH是基于客戶端-服務(wù)端模式。
2、SSH服務(wù)組成
SSH服務(wù)由服務(wù)端軟件OpenSSH和連接客戶端組成(SSH、SecureCRT,xshell等),默認端口是22。SSH是一個守護進程,負責實時監(jiān)聽客戶端請求,并進行處理。
3、SSH協(xié)議框架組成
SSH協(xié)議框架中核心部分的三個協(xié)議:傳輸層協(xié)議、用戶認證協(xié)議、連接協(xié)議。
- 傳輸層協(xié)議(The Transport Layer Protocol):提供服務(wù)器認證,數(shù)據(jù)安全性,信息完整性等功能的支持。
 - 用戶認證協(xié)議(The User Authentication Protocol):為服務(wù)器提供客戶端的身份的識別。
 - 連接協(xié)議(The Connection Protocol):將加密的信息隧道復(fù)用成若干個邏輯通道,提供給更高層的應(yīng)用協(xié)議使用; 各種高層應(yīng)用協(xié)議可以相對地獨立于SSH基本體系之外,然后依靠這個基本框架,通過連接協(xié)議使用SSH的安全機制。
 

4、SSH工作流程
4.1 版本號協(xié)商階段
SSH目前包括 SSH1和SSH2兩個版本, 雙方通過版本協(xié)商確定使用的版本
- 服務(wù)端開啟22端口,等待客戶端發(fā)起連接請求
 - 客戶端向服務(wù)端發(fā)起TCP初始連接請求,建立后,服務(wù)端向客戶端發(fā)送報文(版本標志字符串:SSH-<主協(xié)議版本號>.<次協(xié)議版本號>-<軟件版本號>>)
 - 客戶端收到報文后,解析數(shù)據(jù)包,如果服務(wù)端的協(xié)議版本號比自己的低,且客戶端能支持服務(wù)端的低版本,就采用服務(wù)器端的低版本協(xié)議號,否則采用客戶端自己的協(xié)議版本號。
 - 客戶端回應(yīng)服務(wù)器一個報文,包含客戶端決定使用的協(xié)議版本號。服務(wù)端會比較客戶端發(fā)來的版本號,決定是否能同客戶端進行正常工作。
 - 協(xié)商成功,就會進入密鑰和算法協(xié)商階段,否則服務(wù)端斷開TCP連接。
 
注意:版本號協(xié)商階段報文都是采用明文方式傳輸?shù)摹?/p>
4.2 密鑰和算法協(xié)商階段
SSH支持多種加密算法, 雙方根據(jù)服務(wù)端和客戶端支持的算法,協(xié)商出最終使用的算法
- 服務(wù)端和客戶端分別發(fā)送算法協(xié)商報文給對方,報文中包含自己支持的公鑰算法列表、加密算法列表、MAC(Message Authentication Code,消息驗證碼)算法列表、壓縮算法列表等協(xié)商信息。
 - 服務(wù)端和客戶端根據(jù)對方和自己支持的算法列表確定最終使用的算法。
 - 服務(wù)端和客戶端利用 DH交換(Diffie-Hellman Exchange)算法、主機密鑰對等參數(shù),生成會話密鑰和會話 ID,然后雙方都拿到了相同的會話ID和會話密鑰。
 - 后續(xù)數(shù)據(jù)通信,兩端都會使用會話密鑰進行加密和解密,從而保證了數(shù)據(jù)傳送的安全
 - 認證階段,兩端會使用會話 ID用于認證過程。
 
注意:在協(xié)商階段之前,服務(wù)器端已經(jīng)生成 RSA或 DSA密鑰對,主要用于參與會話密鑰的生成。
4.3 認證階段
SSH客戶端向服務(wù)端發(fā)起認證請求, 服務(wù)端會對客戶端進行認證
- 客戶端向服務(wù)端發(fā)送認證請求,認證請求信息中包含用戶名、認證方法、與該認證方法相關(guān)的內(nèi)容(比如:password認證時,內(nèi)容為密碼)。
 - 服務(wù)端對客戶端進行認證,如果認證失敗,會向客戶端發(fā)送認證失敗消息,其中也包含可以再次發(fā)起認證的方法列表。
 - 客戶端從服務(wù)端返回的認證方法列表中選取一種認證方法再次進行認證。
 - 該過程反復(fù)進行, 直到認證成功或者認證次數(shù)達到上限, 服務(wù)端關(guān)閉連接為止。
 
4.4 會話請求階段:
認證通過后,客戶端向服務(wù)端發(fā)送會話請求
- 服務(wù)器等待客戶端的請求;
 - 認證通過后,客戶端向服務(wù)器發(fā)送會話請求;
 - 服務(wù)器處理客戶端的請求。請求被成功處理后, 服務(wù)端會向客戶端回應(yīng) SSH_SMSG_SUCCESS包,SSH進入交互會話階段;否則回應(yīng) SSH_SMSG_FAILURE包,表示服務(wù)器處理請求失敗或者不能識別請求。
 
4.5 交互會話階段
會話請求通過后,服務(wù)端和客戶端可以進行信息的交互
- 客戶端將要執(zhí)行的命令加密后傳給服務(wù)器;
 - 服務(wù)器接收到報文,解密后執(zhí)行該命令,將執(zhí)行的結(jié)果加密發(fā)還給客戶端;
 - 客戶端將接收到的結(jié)果解密后顯示到終端上.
 
說明:在當前階段下,數(shù)據(jù)可以被雙向傳送
5、SSH的認證方式
5.1 password認證:
客戶端向服務(wù)端發(fā)出 password認證請求,然后將用戶名和密碼加密后發(fā)送給服務(wù)器;服務(wù)器將該信息解密后得到用戶名和密碼的明文,與自己設(shè)備上保存的用戶名和密碼進行比較,并返回認證成功或失敗的消息。
5.2publickey 認證:
采用數(shù)字簽名的方法來認證客戶端。目前,設(shè)備上可以利用RSA和 DSA兩種公共密鑰算法實現(xiàn)數(shù)字簽名。客戶端發(fā)送包含用戶名、公共密鑰和公共密鑰算法的 publickey 認證請求給服務(wù)端。服務(wù)器、端對公鑰進行合法性檢查,如果不合法,則直接發(fā)送失敗消息;否則,服務(wù)器利用數(shù)字簽名對客戶端進行認證,并返回認證成功或失敗的消息。
5.3. password-publickey 認證(SSH2.0)
指定該用戶的認證方式為 password 和 publickey認證必須同時滿足。說明:客戶端版本為 SSH1的用戶只要通過其中一種認證即可登錄;客戶端版本為 SSH2的用戶必須兩種認證都通過才能登錄。
5.4 any認證(SSH2.0)
指定該用戶的認證方式可以是 password、 publickey中任意一種。
6、SSH常用命令
6.1 遠程登錄
ssh 用戶名@遠程主機ip:首次登陸需要下載對方公鑰。示例:ssh 192.168.1.100
6.2 遠程上傳
scp [需要上傳文件的本地位置] root@遠程主機ip:[需要保存在遠程主機的路徑]:從本地上傳文件到遠程主機示例:scp /root/test.sh root@192.168.1.100
6.3 遠程復(fù)制
scp root@遠程主機ip:[遠程主機文件絕對路徑] [需要保存的本地位置]:從遠程主機下載文件到本機示例:scp root@192.168.1.100:/root/test.sh /root















 
 
 
 
 
 
 