SSH協議(1)-工作原理及過程


 

SSH全稱是Secure ShellSSH協議是基於應用層的協議為遠程登錄會話和其他網絡服務提供安全性的協議

SSH使用最多的是遠程登錄和傳輸文件,實現此功能的傳統協議都不安全(ftp,telnet等),因為它們使用明文傳輸數據。而SSH在傳輸過程中的數據是加密的,安全性更高。

 
工作原理 
SSH協議是基於非對稱加密方法的,服務器和客戶端都會生成自己的公鑰和私鑰。 
(1) 服務器建立公鑰。若遠程服務器是新系統,會在/etc/ssh目錄下生成一個名為ssh_host_ecdsa_key.pub的公鑰,同時生成一個名為ssh_host_ecdsa_key的私鑰,這一對就是遠程服務器的公鑰與私鑰。之后每回啟動sshd服務的時候,系統會自動在此路徑下查找公鑰。 
遠程服務器的公鑰: 
這是遠程服務器的公鑰 
(2) 客戶端請求連接。linux或者mac系統可以直接通過自帶的shell連接,指令為ssh user@host,如果客戶端和服務器是相同的用戶,則可以省去user,直接使用ssh host。 
(3) 服務器發送公鑰給客戶端。服務器接到請求后,把公鑰傳給客戶端使用。 
(4) 客戶端記錄服務器公鑰並計算自己的公私鑰。客戶端將服務器傳來的公鑰記錄在~/.ssh/known_hosts中,若是已經記錄有該服務器公鑰,則比對是否一致,一致后就計算客戶端自己的公私鑰。 
客戶端保存的服務器公鑰: 
客戶端保存的服務器公鑰 
(5) 客戶端發送自己的公鑰給服務器。客戶端將自己的公鑰發送給服務器,這樣服務器端就有客戶端公鑰+服務器自己私鑰,客戶端就有服務器公鑰+客戶端自己私鑰,組成了非對稱加密系統。 
(6) 開始雙向加解密。服務器發送數據:用客戶端公鑰加密,客戶端收到數據后用自己私鑰解密客戶端發送數據:用服務器公鑰加密,服務器收到數據后用自己私鑰解密。 


工作過程 
(1) 版本號協商階段,SSH目前包括 SSH1和SSH2兩個版本, 雙方通過版本協商確定使用的版本 
(2) 密鑰和算法協商階段,SSH支持多種加密算法, 雙方根據本端和對端支持的算法,協商出最終使用的算法 
(3) 認證階段,SSH客戶端向服務器端發起認證請求, 服務器端對客戶端進行認證 
(4) 會話請求階段, 認證通過后,客戶端向服務器端發送會話請求 
(5) 交互會話階段 ,會話請求通過后,服務器端和客戶端進行信息的交互 
認證方式 
認證方式主要有兩種:密碼認證和公鑰認證。 
密碼認證:輸入賬號密碼進行認證。 
公鑰認證:需要客戶端生成一對公私鑰,使用ssh-keygen生成,保存在~/.ssh路徑下,然后使用指令ssh-copy-id user@host傳到服務器端,以后再登錄認證的時候,客戶端自動發送公鑰給服務器,服務對比一致則通過認證,不要繁瑣地輸入密碼了。 
客戶端生成的登錄公鑰: 
客戶端生成的登錄公鑰 
服務器端接收的客戶端登錄公鑰: 
服務器端保存的客戶端登錄公鑰 
這一篇文章主要記錄ssh協議的工作原理及過程,接下來還會寫一篇ssh協議涉及的安全威脅及解決辦法。

歡迎關注微信公眾號:shoshana


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM