之前在利用 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) |