场景:在CentOS 7.9操作系统上,配置SSH免密登录,以满足集群中应用的控制脚本能够依赖SSH来执行针对整个集群的操作。
版本:
操作系统:CentOS 7.9
1.配置SSH免密登录原因
(1)规划安装和部署的组件在运行时,需要依赖SSH来执行针对整个集群的操作。比如,在Hadoop集群中,Hadoop控制脚本依赖SSH来执行针对整个集群的操作。
(2)在运维部署时,无需重复输入密码和打开多个对话框,使用scp等工具在集群之间传输文件无需频繁输入密码。
2.本例集群配置
集群机器规划。
序号 | 主机名 | IP |
1 | Kubernetes01 | 172.18.10.11 |
2 | Kubernetes02 | 172.18.10.12 |
3 | Kubernetes03 | 172.18.10.13 |
4 | Kubernetes04 | 172.18.10.14 |
5 | Kubernetes05 | 172.18.10.15 |
3.设置主机名称
hostnamectl set-hostname Kubernetes01
hostnamectl set-hostname Kubernetes02
hostnamectl set-hostname Kubernetes03
hostnamectl set-hostname Kubernetes04
hostnamectl set-hostname Kubernetes05
4.设置hosts文件域名
每台机器都得设置。
4.1查看配置
查看指令:cat /etc/hosts
4.2新增配置
修改指令:vi /etc/hosts
新增内容:
172.18.10.11 Kubernetes01
172.18.10.12 Kubernetes02
172.18.10.13 Kubernetes03
172.18.10.14 Kubernetes04
172.18.10.15 Kubernetes05
5.配置SSH免密登录(root用户)
免密要求:服务器双向免密登录。
5.1配置Kubernetes01的免密登录
在Kubernetes01主机操作。
5.1.1生成公钥和秘钥
公钥和秘钥生成指令:ssh-keygen -t rsa
连续3次回车。
5.1.2配置免密登录其它机器
配置主机Kubernetes01免密到其它机器,包括主机本身。
需输入一次密码。
免密到Kubernetes01:ssh-copy-id Kubernetes01
免密到Kubernetes02:ssh-copy-id Kubernetes02
免密到Kubernetes03:ssh-copy-id Kubernetes03
免密到Kubernetes04:ssh-copy-id Kubernetes04
免密到Kubernetes05:ssh-copy-id Kubernetes05
5.1.3公钥和秘钥信息说明
5.1.3.1公钥和秘钥生成目录信息
公钥和秘钥生成目录:/root/.ssh/
秘钥文件:id_rsa;
公钥文件:id_rsa.pub。
5.1.3.2目标机器生成authorized_keys
Kubernetes01免密登录Kubernetes02,则在Kubernetes02生成authorized_keys文件信息。
目录:cd /root/.ssh/
文件名:authorized_keys
5.2配置其它机器的免密登录
按照配置Kubernetes01的免密登录步骤配置Kubernetes02、Kubernetes03、Kubernetes04、Kubernetes05免密登录。
5.3验证免密登录
5.3.1查看主机Kubernetes01可以免密登录的机器
命令:cat /root/.ssh/authorized_keys
可用免密登录的机器,都在authorized_keys中有一条记录。
ssh-rsa AAAAB3..省略字符...... root@Kubernetes05
解析:ssh-rsa,命令开头;AAAAB3..省略字符..PmN2gT,是公钥;root@Kubernetes05,root用户可以登录到主机Kubernetes05。
5.3.2主机Kubernetes01免密登录的Kubernetes05
登录指令:ssh root@Kubernetes05
退出指令:exit
5.3.3使用scp命令验证
文件传输命令:scp /etc/yum.repos.d/* root@Kubernetes02:/etc/yum.repos.d/
6.免密登录生成案例命令:
(1)公钥和秘钥生成指令:ssh-keygen -t rsa(每台都要操作)
(2)拷贝公钥指令:ssh-copy-id Kubernetes05(每台都要操作)
(3)在.ssh目录下生成文件列表