上文對SSH的主要配置項進行了講解,下面我們來了解下SSH免密碼登入的原理。
ssh免密碼登入的原理就是通過非對稱加密算法,即公私密鑰對實作免密碼登入的。也就是說,在伺服器生成公鑰和私鑰,當有用戶端連接配接此伺服器,将用戶端的public key寫入~/.ssh/authorized_keys檔案,此檔案中會維護一個public key,當public key驗證一緻時,ssh會登入成功,同理,要實作雙向免密碼登入,隻需要在用戶端的authorized_keys檔案中維護服務端的public key即可,切記,不要傳輸private key,不然會出事的,哈哈!
上圖說明了ssh免密碼登入的配置過程。ssh-copy-id的公鑰複制指令,省的用scp指令上傳了。
這裡要提一下更快的生成key的方法:
$ ssh-keygen -t rsa -P ''
直接ssh-keygen然後三次回車就可以了。
-P表示密碼,-P '' 就表示空密碼,也可以不用-P參數,這樣就要三車回車,用-P就一次回車。
當然,ssh加密算法的-t參數是可以選擇的哈。ssh免密碼登入的關鍵在于authorized_keys中維護好公鑰,這樣才能實作免密碼登入。
SSH免密碼登入應用很廣,包括主流的代碼托管網站,github和gitlab也在用ssh key,這在叢集維護時将大大提升效率。當然了,SSH協定的進階功能有很多,下次我們來看如何遠端執行SSH指令,這個應用也很廣哦,尤其是在上百台叢集維護的時候。