简介

在Linux系统需要互相访问时,需要知道被访问系统的密码,才能进行操作。在Hadoop集群运行时需要matset与各个slave之间进行访问,为了避免每次访问时输入密码的操作,提前进行ssh免密码访问设置。

配置免密码访问思路:
ssh免密码访问是通过RSA加密算生成密钥,包括私钥和公钥,我们把公钥追加到用来认证授权的key中去。每台机器配置本地免密登录,然后将各个slave机器上生成的~/.ssh/id_dsa.pub公钥内容追加到master主机的authorized_keys中,最后将master主机中包括每台机器公钥的authorized_keys文件发送到集群中所有的服务器,这样集群中每台服务器都拥有所有服务器的公钥。集群间任意两台机器便可以实现免密登录了。

步骤(使用hadoop用户操作,各节点同时进行)

1.检查是否安装openssh
rpm -qa |grep openssh-server

若输出相应openssh-server版本号,则说明系统中已经安装。

centos7里免密登录mysql centos7 免密_hadoop


相反若无任何输出,则需要先安装openssh-server。

apt-get install openssh-server
2.查看~目录下是否有.ssh文件夹(如果之前没有进行过ssh操作,则没有.ssh文件夹)
cd ~
ls -la

(只用ls无法看到以.开头的文件)

centos7里免密登录mysql centos7 免密_hadoop_02

3.如果没有.ssh文件,则需要进行一次ssh访问操作

(可以访问本机,也可以多台电脑同时访问一个)

ssh master

需要输入hadoop用户密码,首次连接时询问“您确定要继续连接吗?”,输入yes

centos7里免密登录mysql centos7 免密_免密码_03


再次查看是否生成

ls -la

centos7里免密登录mysql centos7 免密_服务器_04

4.进入.ssh文件夹,查看内容
cd .ssh
ll -la

centos7里免密登录mysql centos7 免密_服务器_05


(此时还没有生成秘钥)

5.在.ssh目录下,通过ssh-keygen命令生成秘钥
ssh-keygen -t rsa

(密钥类型可以用 -t 选项指定。如果没有指定则默认生成用于SSH-2的RSA秘钥
ssh加密方式可以选 rsa或dsa,默认dsa,本次配置需要采用rsa,所以要显式声明。)

执行该命令后,有三个值需要输入,直接点击“回车”即可,全部设置为空。

1.输入要保存密钥的文件(/home/hadoop/.ssh/id_rsa):

2.输入密码(无密码短语为空):

3.再次输入相同的密码:

centos7里免密登录mysql centos7 免密_服务器_06


再次查看.ssh目录下文件

centos7里免密登录mysql centos7 免密_hadoop_07


(已经生成公钥、私钥)

6.创建一个文件用来存放所有公钥,并修改权限
touch authorized_keys
ll -la

centos7里免密登录mysql centos7 免密_免密码_08


创建好文件后,修改权限

chmod 600 ~/.ssh/authorized_keys
chmod 700 -R ~/.ssh

(-R参数表示对该目录下的所有子目录中的文件及文件夹也递归的同样
设置权限)

可使用ll -la命令查看修改后的文件权限

centos7里免密登录mysql centos7 免密_免密码_09

7.将各个节点中的公钥添加到suthorized_keys文件中
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

查看suthorized_keys文件中是否有公钥内容

~/.ssh/authorized_keys

centos7里免密登录mysql centos7 免密_服务器_10


(每个节点中authouized_keys文件都传入了各自的公钥)

8.将每个子节点个的公钥传到主节点

将每个子节点上的authouized_keys文件复制到主节点上
slave1:

scp id_rsa.pub hadoop@master:~/.ssh/id_rsa.pub_s1

slave2:

scp id_rsa.pub hadoop@master:~/.ssh/id_rsa.pub_s2

slave3:

scp id_rsa.pub hadoop@master:~/.ssh/id_rsa.pub_s3

centos7里免密登录mysql centos7 免密_centos7里免密登录mysql_11

9.合并authouized_keys信息

将每个公钥都添加到master节点上的~/.ssh/authorized_keys文件中

cat id_rsa.pub_s1>> authorized_keys
cat id_rsa.pub_s2>> authorized_keys
cat id_rsa.pub_s3>> authorized_keys

执行结束后查看authorized_keys文件

centos7里免密登录mysql centos7 免密_centos7里免密登录mysql_12

10.将合并后的公钥文件传至子节点
scp authorized_keys hadoop@slave1:~/.ssh/
scp authorized_keys hadoop@slave2:~/.ssh/
scp authorized_keys hadoop@slave3:~/.ssh/

执行结束后打开每个节点的authorized_keys文件,确认完整性

centos7里免密登录mysql centos7 免密_centos7里免密登录mysql_13

11.免密码访问设置成功
ssh (想要访问的机器名)

centos7里免密登录mysql centos7 免密_免密码_14