一 什麼是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的公私鑰,也就是生成 公鑰和私鑰,假設現在想在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 來登錄了
免密登錄原理如下 圖片來自於網絡
圖解,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要做一次加密驗證。對於非對稱加密,公鑰加密的密文不能公鑰解開,只能私鑰解開。
閱讀更多 IT生涯 的文章