目录
1 概述
- 管理更加便捷:两个节点,通过密钥形式访问,不需要单向的输入密码。
2 原理
管理机生成密钥对,将公钥发送被管设备。(缺)
3 操作指南
实验设备
角色 | 主机名 | ip |
管理机 | m01 | 10.0.0.61 |
被管理节点 | nfs01 | 10.0.0.31 |
被管理节点 | web01 | 10.0.0.7 |
被管理节点 | backup | 10.0.0.41 |
步骤 1:基本检查,对设备进行网络连通性测试
# 方式一
ping 172.16.1.x
# 方式二
nmap -p22 172.16.1.31 172.16.1.41
步骤 2:创建key
tips:不加参数 -t 也可以。现在是通过 rsa 方法对数据进行加密。
ssh-keygen -t rsa
步骤 3 :分发公钥
ssh-copy-id -i /root/.ssh/id_rsa.pub root@10.0.0.41
步骤 4 :连接测试
ssh root@10.0.0.41 hostname -I
tips:通过 ssh-copy-id 传输后,公钥被存放在对方服务器的用户家目录(~/)的 .ssh 中,名字为“authorized_keys”。
4 自动化创建与分发密钥
obstacles:
- 创建key命令
- 分发密钥时询问 yes / no(yes 后会把信息保存到 .ssh/know_hosts)
- 分发公钥时要求输入密码
4.1 自动化创建 key 命令
ssh-keygen -f ~/.ssh/id_rsa -P ''
ssh-keygen -t rsa -f ~/.ssh_rsa/ -P ''
tips:
- -f 用于指定私钥的位置
- -P 密码短语 设置为空
4.2 自动分发密钥
# 先安装 sshpass
yum install -y sshpass
# 参数 -p[密码]
# 测试:查看是否运行成功
sshpass -pa ssh 10.0.0.7 hostname -I
# 使用 sshpass 与 ssh-copy-id 分发公钥
sshpass -pa ssh-copy-id 10.0.0.31
tips:
- sshpass 与 ssh-copy-id 的时候如果第1次连接,提示 yes/no,sshpass 失效了。
- sshpass适用于给ssh相关的命令提供密码:ssh,scp,ssh-copy-id。
问题 1:第一次连接的时候通常会提示 yes / no
这个问题是遇到了检查主机信息,输入 yes 后,它的信息是存放在 “~/.ssh/know_hosts”
解决这个问题也很简单,临时取消主机检查信息即可。参数(oStrictHostKeyChecking=no)
sshpass -pa ssh-copy-id -i ~/.ssh/id_rsa.pub oStrictHostKeyChecking=no 10.0.0.41
4.3 自动创建与分发 key 脚本
遇到问题:
1、假如主机密码不一样怎么写?
- 集群,采用相同的配置与密码。
- 每个部分使用 for 循环。