ssh 免密登錄及其原理

一 什麼是ssh

引用百度百科的一句話,SSH 為 Secure Shell 的縮寫,由 IETF 的網絡小組(Network Working Group)所制定;SSH 為建立在應用層基礎上的安全協議。SSH 是目前較可靠,專為遠程登錄會話和其他網絡服務提供安全性的協議。利用 SSH 協議可以有效防止遠程管理過程中的信息洩露問題。

說白了ssh其實就是一種遠程登錄的協議,由於它的權威性,目前是比較安全和可靠的。

二 基於口令的驗證

在linux中如何從一臺機器A登錄到另外一臺機器B中?在linux中 要想從A登錄到B 就可以使用 ssh username@B 然後 只需要輸入密碼就可以 這個默認是用的端口是21 如果端口不是21 則加 -p 並且指定端口 ,這種方式登錄使用的是口令登錄,只要知道帳號和口令,就可以登錄到遠程主機。所有傳輸的數據都會被加密,但缺點是:不能保證你正在連接的服務器就是你想連接的服務器。因為這個服務器可能是偽造的 這樣你的賬號和密碼就會統統洩露,哈哈 到時候 你就悲劇了。

ssh 免密登錄及其原理

三基於密鑰的驗證

這種驗證方式是 客戶端需要生成一對ssh的公私鑰,也就是生成 公鑰和私鑰,假設現在想在A機器想通過基於秘鑰的驗證方式登錄到機器B中,則需要做一下步驟。

1 在機器A中生成一對公鑰和私鑰

在linux生成公鑰私鑰非常簡單 只需要執行

ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa

然後通過scp命令 copy到 遠程機器B中

cd .ssh

scp id_rsa.pub username@B:/home/username/.ssh/authorized_keys

執行上面的命令之後 會提示用戶命令 只需要輸入密碼就可以了,以後就可以通過ssh username@B 來登錄了

免密登錄原理如下 圖片來自於網絡

ssh 免密登錄及其原理

圖解,server A免登錄到server B:

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要做一次加密驗證。對於非對稱加密,公鑰加密的密文不能公鑰解開,只能私鑰解開。


分享到:


相關文章: