SSH免密登錄


SSH免密登錄


ssh免密登錄的原理

首先免密登錄要從SSH的流程說起,最常見的是密碼登錄,流程如下


SSH免密登錄


免密登錄要實現的是客戶端向服務端發起連接請求的時候,服務端已經認識客戶端,從而實現直接授權。

通過1個類比來理解這個原理:

密碼登錄就是小弟要到山上的寨子裡去,結果看門的大爺說了自己的暗號(12345)小弟收到暗號後,根據組織上給的算法,報上暗號(123456,其實就是加了後面一個數字)。對頭!放行。

那麼實現免密登錄就是不想提供密碼,這個時候交互的邏輯是不會變的,對方一定要檢驗客戶端信息。不輸入密碼,那就對服務端的任意一個信息進行校驗就可以。

比如:

上面的大爺今天說的是12345,明天說的可能是123456。

那麼如何保證你就是山寨裡的人呢,就要“算法”一致。這個可以通過客戶端生成一對秘鑰來,然後把公鑰分發給服務端。“算法”一致就是你加密的我能解密,解出來給你看看,就知道我是不是山寨的人了。

所以操作邏輯是這樣

1.在A上生成公鑰私鑰。

2.將公鑰拷貝給server B,要重命名成authorized_keys(從英文名就知道含義了)

3.Server A向Server B發送一個連接請求。

4.Server B得到Server A的信息後,在authorized_key中查找,如果有相應的用戶名和IP,則隨機生成一個字符串,並用Server A的公鑰加密,發送給Server A。

5.Server A得到Server B發來的消息後,使用私鑰進行解密,然後將解密後的字符串發送給Server B。Server B進行和生成的對比,如果一致,則允許免登錄。

總之:A要免密碼登錄到B,B首先要擁有A的公鑰,然後B要做一次加密驗證。對於非對稱加密,公鑰加密的密文不能公鑰解開,只能私鑰解開。

具體操作非常簡單了,可以參考https://blog.csdn.net/jeikerxiao/article/details/84105529。這裡就不描述了。


分享到:


相關文章: