注意:本文档配置的为Vagrant用户的SSH免密,如果要配置其他用户或者root用户的请修改相关配置。
资源规划
组件 | bigdata-node1 | bigdata-node2 | bigdata-node3 |
---|---|---|---|
OS | centos7.6 | centos7.6 | centos7.6 |
环境准备
安装操作系统
参考:《基于Vagrant的CentOS7.6》
SSH免密配置
配置ssh免密,实现节点间的无密码登录 (注意关闭防火墙),将实现集群节点互访。
Φ 生成公钥、私钥
1.以[vagrant]用户登录产生密钥(集群所有机器执行脚本)
cd ~
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
注:以rsa算法,生成公钥、私钥对,-P ‘’表示空密码。该命令运行完后,会在个人主目录下生成.ssh目录,里面会有二个文件idrsa(私钥) ,id_rsa.pub(公钥)
2.导入authorized_keys(节点1**执行脚本_**)
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
chmod 600 ~/.ssh/id_rsa
3.[root]用户设置SSH配置文件权限(集群所有机器执行脚本)
sudo su
chmod 766 /etc/ssh/sshd_config
4.[root]用户修改SSH配置文件(集群所有机器执行脚本)
sudo vi /etc/ssh/sshd_config
配置如下:
RSAAuthentication yes ## 启用 RSA 认证
PasswordAuthentication yes ## 开启ssh密码登陆
PubkeyAuthentication yes ## 启用公钥私钥配对认证方式
PermitRootLogin yes ## 不限制登录方式
AuthorizedKeysFile .ssh/authorized_keys ## 公钥文件路径(和上面生成的文件同)
设置完之后记得重启SSH服务,才能使刚才设置有效。
sudo systemctl restart sshd.service
sudo systemctl status sshd.service
sudo systemctl start sshd.service
sudo systemctl enable sshd.service # 随开机启动
sudo systemctl disabled sshd.service
sudo systemctl stop sshd.ervice
5.验证(节点1执行脚本)
ssh localhost
ssh bigdata-node1
Φ 其它机器生成公钥、密钥
以vagrant用户身份登录其它几个节点生成公钥、密钥(如果此步骤在上一步骤中已做,略过)
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
然后用scp命令,把其他节点公钥文件发放给节点1
## 节点2节点上运行
scp ~/.ssh/id_rsa.pub vagrant@bigdata-node1:~/id_rsa_02.pub
## 节点3节点上运行
scp ~/.ssh/id_rsa.pub vagrant@bigdata-node1:~/id_rsa_03.pub
Φ 合并所有节点密钥
在节点1上将其他节点上传的id_rsa_xx.pub,导入authorized_keys
cat ~/id_rsa_02.pub >> ~/.ssh/authorized_keys
cat ~/id_rsa_03.pub >> ~/.ssh/authorized_keys
经过这个步骤,节点1上拥有所有集群机器的authorized_keys
Φ 分发公钥集合
在节点1上分发authorized_keys
## 将节点1上的“最全”公钥,复制到其它机器
scp ~/.ssh/authorized_keys vagrant@bigdata-node2:~/.ssh/authorized_keys
scp ~/.ssh/authorized_keys vagrant@bigdata-node3:~/.ssh/authorized_keys
修改其它节点上authorized_keys文件的权限
chmod 600 ~/.ssh/authorized_keys
chmod 600 ~/.ssh/id_rsa
chmod g-w ~/.ssh
chmod 700 ~/.ssh
Φ 验证
# 各节点相互登录验证
ssh bigdata-node1
exit
ssh bigdata-node2
exit
ssh bigdata-node3
exit
注:.ssh 文件夹下(~/.ssh)的文件功能解释
文件名 | 含义 |
---|---|
known_hosts | 记录 ssh 访问过计算机的公钥(public key) |
id_rsa | 生成的私钥 |
id_rsa.pub | 生成的公钥 |
authorized_keys | 存放授权过得无密登录服务器公钥 |