之前在利用 scp 和 sync 等進行主機間通信時,每一次都要輸入各主機的密碼,配置SSH免密登錄即可省去該過程。
一、 免密登錄原理:
1. 在主機 A 利用非對稱性加密算法生成密鑰對,公鑰發送給其它主機,私鑰保留。
2. 主機 A 將公鑰發送給 B,即可免密訪問 B。
3. 主機 A 將數據用私鑰加密後發送給 B 。
4. B 接收到數據後用 A 給的公鑰解密數據。
5. B把自己的信息用 A 給的公鑰加密後發給 A,A 用自己的私鑰解密數據。
二、免密登錄配置:
1. 生成密鑰對:過程中遇到提示直接按回車即可。
ssh-keygen -t rsa
切換到 home 目錄下,即可看到隱藏文件夾 .ssh,進入文件夾,即可看到密鑰文件,.pub 文件即爲公鑰。
重複該過程,包含 NameNode、ResourceManager、Secondary NameNode 等需要進行通信的主機都要生成密鑰對。
2. 發送公鑰:要將公鑰發給主機本身,再發給其它主機。
ssh-copy-id 目標機器
如上述原因,重複該過程。
可以看到之後登錄其它主機無需輸入密碼。
三、 ~/.ssh 下文件功能解析:
密鑰生成併發送完畢後在 ~/.ssh 文件夾下可以看到如下四個文件:
其對應功能如下標所示:
authorized_keys |
存放授權過的免密登陸的主機公鑰 |
id_rsa |
生成的私鑰 |
id_rsa.pub |
生成的公鑰 |
known_hosts | 記錄ssh訪問過的主機的公鑰(public key) |