關於ssh加密方式的理解


最近公司服務器被挖礦,所以更換了ssh的連接方式,從之前的密碼登陸更換為密鑰登陸方式,且禁止了密碼登陸。所以在配置這個密鑰的過程中,順帶了解了些ssh的原理和相關知識。通用的開源

1、ssh是什么,為什么需要ssh,ssh用在哪里

1)ssh是一種協議標准,也叫做安全外殼協議,主要為遠程登錄會話和其他網絡服務提供安全性的協議。全稱為Secure SHell,本質上是進行加密的shell。它既可以代替telnet,又可以為ftp、pop、甚至ppp提供一個安全的“通道”。

2)利用 SSH 協議,可以有效防止遠程管理過程中的信息泄露問題,而且也能夠防止DNS欺騙和IP欺騙,因為傳輸過程中對數據進行壓縮,也提高了傳輸效率。

3)幾乎所有UNIX平台—包括HP-UXLinuxAIXSolarisDigital UNIXIrix,以及其他平台,都能 運行SSH。現在主流的開源實現是openssh,當然也有很多商業實現。

2、兩種加密方式,ssh的使用方式,ssh支持的兩種級別的安全驗證

  1)加密方式分為兩種 對稱加密和非對稱加密。對稱加密顧名思義,數據加密和解密使用同一個密鑰,優點是加密強度高,但是缺點是密鑰丟失很容易造成安全問題。

 

ssh是使用非對稱加密對數據傳輸過程進行處理,分為私鑰和公鑰,在進行數據加密處理的時候通常使用公鑰對數據進行加密,私鑰進行解密(這里注意僅限於數據加密的時候,簽名的時候剛好相反,使用私鑰進行簽名,公鑰進行驗簽)。且基本不存在通過公鑰推導出私鑰的可能

a、第一種方式為密碼登錄。在整個過程中,客戶端本身不存有任何密鑰。

 

第一步,客戶端輸入用戶名密碼,發出登陸請求。

第二步,服務端接收到請求並返回給客戶端公鑰以及公鑰指紋(公鑰指紋是為了防止中間人攻擊的產物,是由於公鑰本身過長(1024位)而對其hash之后產生的128位的指紋,方便在第一次連接服務端的時候,用戶對服務端身份的對比確認。用戶確認通過后,該host會被加入到known_hosts。第二次連接時,不需要再次確認服務端身份了。感興趣可以搜索中間人攻擊,如下圖)

 

第三步,客戶端收到服務端發送的公鑰,對密碼進行加密然后將密文發送給服務端

第四步,服務端收到密文,使用私鑰將密文進行解密,得到密碼並對比確認

第五步,服務端返回給客戶端,登陸結果。

 b、 第二種方式為公鑰登陸,也就是免密登陸。

第一步,客戶端生成一對密鑰,手動將公鑰添加到服務端的authorized_keys中。

第二步,客戶端直接發起登陸請求到服務端

第三步,服務端收到請求后,生成隨機數R,並使用公鑰對隨機數R進行加密,得到密文並返回給客戶端

第四步,客戶端收到密文后,使用私鑰對密文解密,得到隨機數R。然后用MD5對隨機數R和SessionKey進行生成摘要A1,並發送給服務端

第五步,服務端同樣用MD5對隨機數R和SessionKey進行生成摘要A2,然后對比A1和A2,完成登錄確認。

 

擴展

ssh-keygen是用於生產密鑰的工具。

  • -t:指定生成密鑰類型(rsa、dsa、ecdsa等)
  • -P:指定passphrase,用於確保私鑰的安全
  • -f:指定存放密鑰的文件(公鑰文件默認和私鑰同目錄下,不同的是,存放公鑰的文件名需要加上后綴.pub)

 部分內容和全部圖片是從網上拿來用的,如有侵權,聯系刪除


免責聲明!

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



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