Step2—免密登录配置
# 一、免密登录认证 Kylin V10 🔐
在 Kylin V10 的多节点环境中,SSH 免密登录 是实现集群通信与自动化部署的关键前提。 例如 Ambari Server 管理 Agent、Bigtop 部署脚本执行、Hadoop 服务分发等,都依赖无密码登录来保证脚本顺畅执行。
为什么必须配置?
如果未配置免密登录,后续执行 Ambari、Hadoop、Spark 等部署脚本时,会频繁出现 “Host unreachable” 或 “Permission denied ( publickey,password)” 错误,导致自动化流程中断。
# 二、免密登录原理 🤔
免密登录(SSH Key Authentication)基于 非对称加密机制。 通过生成 公钥(Public Key) 与 私钥(Private Key),实现客户端与服务端之间的可信验证。
| 角色 | 文件路径 | 作用说明 |
|---|---|---|
| 客户端(发起端) | ~/.ssh/id_rsa | 私钥,严格保密,不可外传 |
| 服务端(目标节点) | ~/.ssh/authorized_keys | 公钥存储处,用于验证合法性 |
当客户端尝试登录远程主机时:
- 客户端用私钥进行加密签名;
- 服务端用公钥验证签名;
- 验证成功则允许登录,无需密码。
这种机制不仅安全可靠,还提升自动化程度,是大数据集群初始化阶段必做配置。
# 三、免密配置步骤 🔑
以三台 Kylin V10 服务器为例:
| 主机名 | IP 地址 | 角色 |
|---|---|---|
| dev1 | 192.168.10.11 | 主节点(Ambari Server) |
| dev2 | 192.168.10.12 | 从节点1(Agent) |
| dev3 | 192.168.10.13 | 从节点2(Agent) |
目标:让 dev1 能无密码登录 dev2 和 dev3。
# 1. 生成 SSH 密钥对
在主节点 dev1 执行以下命令:
ssh-keygen -t rsa -b 2048 -f ~/.ssh/id_rsa -N ''
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa
chmod 644 ~/.ssh/id_rsa.pub
1
2
3
4
2
3
4
生成结果:
| 文件 | 说明 |
|---|---|
~/.ssh/id_rsa | 私钥文件 |
~/.ssh/id_rsa.pub | 公钥文件 |
建议
不要为密钥设置 passphrase,否则自动化执行会被中断。
# 2. 分发公钥到其他节点
使用 ssh-copy-id 命令将 dev1 的公钥分发到所有目标节点:
ssh-copy-id -i ~/.ssh/id_rsa.pub dev1
ssh-copy-id -i ~/.ssh/id_rsa.pub dev2
ssh-copy-id -i ~/.ssh/id_rsa.pub dev3
1
2
3
2
3
如果 ssh-copy-id 不存在,可使用手动方式:
cat ~/.ssh/id_rsa.pub | ssh root@dev2 "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
cat ~/.ssh/id_rsa.pub | ssh root@dev3 "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
1
2
2
小贴士
分发完毕后,~/.ssh/authorized_keys 中应包含来自主节点的公钥。

# 3. 验证免密登录
在 dev1 上测试连接:
ssh dev2
ssh dev3
1
2
2
若无需输入密码即可进入远程终端,则说明免密配置成功。
