我在給雲伺服器配置本地電腦免密登錄的過程中,學習了一下SSH免密登錄的實現原理。 對SSH中輸入密碼登錄和免密登錄的原理根據自己的理解做瞭如下筆記,分享給大家希望能有所幫助。 1. 對稱加密 對稱加密是加密過程中只有一個密鑰,加密解密都只用這個密鑰。 加密通訊至少要有一對通訊對象,對稱加密的問題主要 ...
我在給雲伺服器配置本地電腦免密登錄的過程中,學習了一下SSH免密登錄的實現原理。
對SSH中輸入密碼登錄和免密登錄的原理根據自己的理解做瞭如下筆記,分享給大家希望能有所幫助。
1. 對稱加密
對稱加密是加密過程中只有一個密鑰,加密解密都只用這個密鑰。
加密通訊至少要有一對通訊對象,對稱加密的問題主要體現在如何將這個唯一的密鑰從生成密鑰的地方安全地傳輸到另一還未持有密鑰的一方,即經典的“先有雞還是先有蛋的問題”,很難解決這個問題啊(流汗...)。
2. 非對稱加密
非對稱加密是有兩個密鑰,一個用來加密,一個用來解密。
針對於對稱加密它在有可能在傳輸密鑰的過程中泄露密鑰的問題,非對稱加密方法直接認為,我在傳輸密鑰的時候肯定被別人偷偷地監聽了,所以我傳輸給對方的密鑰我預設叫它公鑰;另一個密鑰我不發出去,就意味著沒人能得到我的另一個密鑰(其實要是你自己的主機被破解了或者被別人登錄了,照樣可以從你的文件系統里看到你的私鑰,由此引申出另一個對私鑰進行進一步加密的方法),稱為私鑰。
非對稱加密可以分為兩種,分別是:
公鑰加密,私鑰解密: 既然我用私鑰才能解密,說明我不想讓別人看到我傳輸的是什麼,一般用來傳輸密碼,或者不想讓別人知道的東西。
私鑰加密,公鑰解密: 既然我用私鑰才能加密,說明我可以讓別人看到我傳輸的是什麼,比如我要傳輸ip地址或者證書,我可以讓你看到我要發的東西,但我主要要防止你偽造,騙人。
3. SSH免密登錄中的非對稱加密
3.1 SSH輸密碼登錄
- SSH伺服器首先自己生成一對公鑰和私鑰。
- SSH伺服器將公鑰傳輸給擬與自己建立ssh連接的客戶端。
- 客戶端通過公鑰對自己輸入的密碼進行加密,並將加密後的字元串傳輸給服務端。
- 服務端用私鑰進行解碼校驗是否是正確的密碼。
- 完成輸密碼登錄的過程。
3.2 SSH免密登錄
- 需要SSH登錄遠程服務端的客戶端在客戶端本地自己生成一堆公鑰和私鑰。
- 客戶端將公鑰傳輸給服務端。
- 服務端隨機生成一個數字N,並用客戶端傳輸過來的公鑰進行加密,並傳輸給客戶端。
- 客戶端接收到加密的字元串以後,再加上sessionID,一起用MD5編碼成哈希值,然後發送回服務端。
- 服務端接收到編碼成哈希值的字元串後,自己也和客戶端一樣用相同的MD5方法再編碼一遍,然後對比驗證一下是否一致。
- 完成免密登錄的過程。
3.3 總結
在SSH協議中,輸入密碼登錄和免密登錄都使用了非對稱加密中的公鑰加密私鑰解密,不同的是輸入密碼登錄中是通過服務端生成公鑰和私鑰,而免密登錄中是通過客戶端來生成公鑰和私鑰。