用ansible设置其他集群之间的免密
时间: 2023-08-10 18:32:50 浏览: 90
在使用 Ansible 部署多个 Hadoop 集群时,可以使用 Ansible 的 `copy` 模块将一个集群节点的公钥复制到其他集群节点上,实现多个集群节点之间的 SSH 无密码登录。
以下是实现步骤:
1. 生成 SSH 密钥对
使用以下命令在 Ansible 控制节点上生成 SSH 密钥对:
```
ssh-keygen -t rsa -b 2048
```
2. 将公钥复制到其他集群节点
假设有两个集群 A 和 B,集群 A 的 IP 为 `192.168.1.100`,集群 B 的 IP 为 `192.168.2.100`。现在要将集群 A 的公钥复制到集群 B 上。
首先,在集群 A 上使用以下命令将公钥复制到本地:
```
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.2.100
```
然后,在 Ansible 控制节点上使用以下命令将集群 A 的公钥复制到集群 B 上:
```
ansible all -m copy -a "src=/root/.ssh/id_rsa.pub dest=/root/.ssh/authorized_keys mode=600" -u root -i 192.168.2.100,
```
其中,`-i` 参数指定目标主机的 IP 地址,`,` 后面的逗号表示只有一个目标主机。
3. 测试 SSH 无密码登录
使用以下命令测试 SSH 无密码登录:
```
ssh 192.168.2.100
```
如果能够直接登录到集群 B 节点,则说明 SSH 无密码登录已成功实现。
注意事项:
- 要保证集群节点之间的时间同步,否则可能会导致 SSH 连接失败。可以使用 NTP 等工具进行时间同步。
- 要保证 SSH 服务已启动,并且允许使用密码登录。可以编辑 `/etc/ssh/sshd_config` 文件,将 `PasswordAuthentication` 选项设置为 `yes`。
阅读全文