使用ssh实现无密码启动hdfs
如果一个集群都使用密码来登录,可想而知是一件十分害怕的事情,所以就很有必要使用ssh来实现无密码登录了
一、spark1的配置ssh
- 检查本机
.ssh
文件中是否有authorized_keys
文件,没有则创建并且修改权限,修改权限,修改权限
cd .ssh
touch authorized_keys
chmod 600 authorized_keys
- 产生密钥对,输入下面命令之后会提示三次,这三次什么提示都不要输入任何字符,
不要输入任何字符
..不要输入任何字符
ssh-keygen -t rsa
使用ll
命令可以在文件夹.ssh
中至少看到下面的信息
-rw-------. 1 hadoop hadoop 602 Nov 19 03:08 authorized_keys
-rw-------. 1 hadoop hadoop 1675 Nov 19 03:30 id_rsa
-rw-r--r--. 1 hadoop hadoop 394 Nov 19 03:30 id_rsa.pub
其中,id_rsa为私钥,id_rsa.pub为公钥。
- 接下来要做的一步就是把spark1中id_rsa.pub添加到spark1中的authorized_keys文件中
cat id_rsa.pub >> authorized_keys
二、集群实现免密码登录
我们这里配置在虚拟机中配置三台机器,具体信息可以查看上面的图片。
准备工作
- 保证每台节点中的用户名相同(例如都为
hadoop
)。如果没有,则创建。
不要直接使用 root 用户。请为集群单独创建用户。
将用户添加至 sudoer 列表
- 切换到 root 用户(
su -
)。 - 使用
visudo
命令,添加 spark 用户到 sudoer 列表。# 在 root 用户之后添加(请根据实际情况赋予权限) root ALL=(ALL) ALL spark ALL=(ALL) ALL
- 保存退出。
远程拷贝id_rsa.pub给所有主机
- 把刚刚在spark1中生成的id_rsa.pub拷贝给所有spark2和spark3,我们这里另外一台机器名spark
scp id_rsa.pub spark2:/home/hadoop/.ssh
- 登录spark2,把id_rsa.pub添加进authorized_keys中
cat id_rsa.pub >> authorized_keys
❗❗❗注意 spark1、spark2、spark3为机器名,hadoop为用户名。如果无法识别机器名,分别在三台机器使用如下命令。
sudo vi /etc/hosts
添加
spark1 192.168.121.100
spark2 192.168.121.101
spark3 192.168.121.102
- A主机免密码登陆B主机
ssh spark2