注意:本文档配置的为Vagrant用户的SSH免密,如果要配置其他用户或者root用户的请修改相关配置。

资源规划

组件 bigdata-node1 bigdata-node2 bigdata-node3
OS centos7.6 centos7.6 centos7.6

环境准备

安装操作系统

参考:《基于Vagrant的CentOS7.6

SSH免密配置

1.png
配置ssh免密,实现节点间的无密码登录 (注意关闭防火墙),将实现集群节点互访。

Φ 生成公钥、私钥

1.以[vagrant]用户登录产生密钥(集群所有机器执行脚本

  1. cd ~
  2. ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa

注:以rsa算法,生成公钥、私钥对,-P ‘’表示空密码。该命令运行完后,会在个人主目录下生成.ssh目录,里面会有二个文件idrsa(私钥) ,id_rsa.pub(公钥)
2.导入authorized_keys(
节点1**执行脚本_**)

  1. cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
  2. chmod 600 ~/.ssh/authorized_keys
  3. chmod 600 ~/.ssh/id_rsa

3.[root]用户设置SSH配置文件权限(集群所有机器执行脚本

  1. sudo su
  2. chmod 766 /etc/ssh/sshd_config

4.[root]用户修改SSH配置文件(集群所有机器执行脚本

  1. sudo vi /etc/ssh/sshd_config

配置如下:

  1. RSAAuthentication yes ## 启用 RSA 认证
  2. PasswordAuthentication yes ## 开启ssh密码登陆
  3. PubkeyAuthentication yes ## 启用公钥私钥配对认证方式
  4. PermitRootLogin yes ## 不限制登录方式
  5. AuthorizedKeysFile .ssh/authorized_keys ## 公钥文件路径(和上面生成的文件同)

设置完之后记得重启SSH服务,才能使刚才设置有效。

  1. sudo systemctl restart sshd.service
  2. sudo systemctl status sshd.service
  3. sudo systemctl start sshd.service
  4. sudo systemctl enable sshd.service # 随开机启动
  5. sudo systemctl disabled sshd.service
  6. sudo systemctl stop sshd.ervice

5.验证(节点1执行脚本

  1. ssh localhost
  2. ssh bigdata-node1

Φ 其它机器生成公钥、密钥

  1. 以vagrant用户身份登录其它几个节点生成公钥、密钥(如果此步骤在上一步骤中已做,略过)

    1. ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
  2. 然后用scp命令,把其他节点公钥文件发放给节点1

    1. ## 节点2节点上运行
    2. scp ~/.ssh/id_rsa.pub vagrant@bigdata-node1:~/id_rsa_02.pub
    3. ## 节点3节点上运行
    4. scp ~/.ssh/id_rsa.pub vagrant@bigdata-node1:~/id_rsa_03.pub

    Φ 合并所有节点密钥

    在节点1上将其他节点上传的id_rsa_xx.pub,导入authorized_keys

    1. cat ~/id_rsa_02.pub >> ~/.ssh/authorized_keys
    2. cat ~/id_rsa_03.pub >> ~/.ssh/authorized_keys

    经过这个步骤,节点1上拥有所有集群机器的authorized_keys

    Φ 分发公钥集合

  3. 在节点1上分发authorized_keys

    1. ## 将节点1上的“最全”公钥,复制到其它机器
    2. scp ~/.ssh/authorized_keys vagrant@bigdata-node2:~/.ssh/authorized_keys
    3. scp ~/.ssh/authorized_keys vagrant@bigdata-node3:~/.ssh/authorized_keys
  4. 修改其它节点上authorized_keys文件的权限

    1. chmod 600 ~/.ssh/authorized_keys
    2. chmod 600 ~/.ssh/id_rsa
    3. chmod g-w ~/.ssh
    4. chmod 700 ~/.ssh

    Φ 验证

    1. # 各节点相互登录验证
    2. ssh bigdata-node1
    3. exit
    4. ssh bigdata-node2
    5. exit
    6. ssh bigdata-node3
    7. exit

    注:.ssh 文件夹下(~/.ssh)的文件功能解释

文件名 含义
known_hosts 记录 ssh 访问过计算机的公钥(public key)
id_rsa 生成的私钥
id_rsa.pub 生成的公钥
authorized_keys 存放授权过得无密登录服务器公钥