一、免密登錄原理
非對稱加密: 由于對稱加密的存在弊端,就產生了非對稱加密,非對稱加密中有兩個密鑰:公鑰和私鑰。公鑰由私鑰產生,但卻無法推算出私鑰;公鑰加密后的密文,只能通過對應的私鑰來解密。

【1】在A服務器使用 ssh-keygen生成一對密鑰:公鑰+私鑰;
【2】將A服務器公鑰追加到B服務器的 authorized_keys 文件中,完成公鑰認證操作;
【3】認證完成后,A服務器向B服務器發起請求,并傳遞公鑰到服務端;
【4】B服務端檢索 authorized_keys 文件,確認該公鑰是否存在;
【5】如果存在該公鑰,則生成隨機數R,并用公鑰來進行加密,生成公鑰加密字符串 pubKey?;并將公鑰加密字符串傳遞給A服務器;
【6】A服務器使用私鑰解密公鑰加密字符串,得到R;
【7】A服務器和客戶端通信時會產生一個會話ID(sessionKey),用MD5對R和SessionKey進行加密,生成摘要(即MD5加密字符串)
【8】A服務器將生成的MD5加密字符串傳給B服務器;
【9】服務端同樣生成 MD5(R,SessionKey)加密字符串;
【10】如果客戶端傳來的加密字符串等于服務端自身生成的加密字符串,則認證成功;
【11】此時不用輸入密碼,即完成建連,可以開始遠程執行shell命令了
二、操作
【1】Hadoop1 中生成公鑰和私鑰,過程中敲(三個回車),就會生成兩個文件id_rsa(私鑰)、id_rsa.pub(公鑰)
[root@hadoop1 ~]# ssh-keygen -t rsa
【2】將Hadoop1 中的公鑰拷貝到要免密登錄的目標機器上 Hadoop2 中
[root@hadoop1 ~]# ssh-copy-id hadoop2
注意:如果有多個用戶,還需要在Hadoop2上采用其他賬號,配置一下無密登錄到 hadoop2
【3】當我們鏈接本機 Hadoop1 的時候發現也要輸入密碼,所以通常我們對本機也會進行配置。Hadoop2重復1中的操作。
[root@hadoop1 ~]# ssh-copy-id hadoop1
三、.ssh文件夾下(~/.ssh)的文件功能解釋
| known_hosts | 記錄 ssh訪問過計算機的公鑰(public key) |
|---|---|
| id_rsa | 生成的私鑰 |
| id_rsa.pub | 生成的公鑰 |
| authorized_keys | 存放授權過得無密登錄服務器公鑰 |