简介
在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版本号,则说明系统中已经安装。
相反若无任何输出,则需要先安装openssh-server。
apt-get install openssh-server
2.查看~目录下是否有.ssh文件夹(如果之前没有进行过ssh操作,则没有.ssh文件夹)
cd ~
ls -la
(只用ls无法看到以.开头的文件)
3.如果没有.ssh文件,则需要进行一次ssh访问操作
(可以访问本机,也可以多台电脑同时访问一个)
ssh master
需要输入hadoop用户密码,首次连接时询问“您确定要继续连接吗?”,输入yes
再次查看是否生成
ls -la
4.进入.ssh文件夹,查看内容
cd .ssh
ll -la
(此时还没有生成秘钥)
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.再次输入相同的密码:
再次查看.ssh目录下文件
(已经生成公钥、私钥)
6.创建一个文件用来存放所有公钥,并修改权限
touch authorized_keys
ll -la
创建好文件后,修改权限
chmod 600 ~/.ssh/authorized_keys
chmod 700 -R ~/.ssh
(-R参数表示对该目录下的所有子目录中的文件及文件夹也递归的同样
设置权限)
可使用ll -la命令查看修改后的文件权限
7.将各个节点中的公钥添加到suthorized_keys文件中
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
查看suthorized_keys文件中是否有公钥内容
~/.ssh/authorized_keys
(每个节点中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
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文件
10.将合并后的公钥文件传至子节点
scp authorized_keys hadoop@slave1:~/.ssh/
scp authorized_keys hadoop@slave2:~/.ssh/
scp authorized_keys hadoop@slave3:~/.ssh/
执行结束后打开每个节点的authorized_keys文件,确认完整性
11.免密码访问设置成功
ssh (想要访问的机器名)