![SSH免密登錄](http://p2.ttnews.xyz/loading.gif)
ssh免密登錄的原理
首先免密登錄要從SSH的流程說起,最常見的是密碼登錄,流程如下
![SSH免密登錄](http://p2.ttnews.xyz/loading.gif)
免密登錄要實現的是客戶端向服務端發起連接請求的時候,服務端已經認識客戶端,從而實現直接授權。
通過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。這裡就不描述了。
閱讀更多 杯酒看蒼穹 的文章