首先講一下計算機網絡安全中的加密機制,當前的加密類型可以概括爲量大類,一類是對稱密碼算法,一類是非對稱密碼算法。所謂對稱與非對稱主要是指加密和解密時使用的密鑰是否一致,若一致則爲對稱密碼算法,若不一致則爲非對稱密碼算法。對稱密碼算法的主要優點是加密速度快,但是安全性相對較差,使用與對安全性要求不那麼高的大文件進行加密;而非對稱密碼算法的主要優點是安全性極高,確定是加密速度較慢,不適合大文件的加密場景;當然現在有很多加密方案會同時結合這兩種類型的密碼算法,既能兼顧到加密的速度,又能考慮到安全性的問題。
在ssh免密碼登錄的應用中,主要是非對稱密碼算法。通常每臺機器都有自己的一對密鑰,一個我們稱爲公鑰,一個我們稱爲私鑰,無論用哪個對數據進行加密,解密時候都需要另外的一個密鑰。但是公鑰是公開的,也就是說任何人都可以通過合法的手段獲取到,但是私鑰是私密的,其他人是無法獲得的。使用公鑰加密、私鑰解密的方式經常用於加密場景,而使用私鑰加密、公鑰解密的方式經常用於身份驗證、數字簽名等。
下面我們具體看一下下面這個圖,spark01中會有一個授權列表文件authorized_keys文件,這裏面需要保存weekend110的一個公鑰副本。首先weekend110要請求登錄spark01,這時候spark01會查看本地的授權列表,若找到weekend110的公鑰,則用此公鑰加密一個隨機字符串發送給weekend110,weedkend110收到後使用自己的私鑰進行解密,解密結果再發給spark01, spark01收到後驗證時候與剛剛自己產生的隨機字符串相同,若相同則通過驗證,完成登錄。