配置Ssh免密码登录
一个master节点,两个client节点(client1、client2)
1.所有节点创建hadoop用户,并设置密码
以root账号登录:
useradd hadoop
passwd hadoop
2.设置Master节点用hadoop账号免密码登录本机
以hadoop账号登录,执行以下命令:
ssh-keygen –t rsa
直接回车,运行后访问其保存路径时直接回车采用默认路径。生成的密钥对:id_rsa(私钥)和id_rsa.pub(公钥),默认存储在"/home/hadoop/.ssh"目录下。
[hadoop@namenode1 .ssh]$ pwd
/home/hadoop/.ssh
[hadoop@namenode1 .ssh]$ ls
id_rsa id_rsa.pub
2.1 把id_rsa.pub(公钥)追加到授权密钥文件里
hadoop用户登录:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
或是进入.sh目录下,直接cp id_rsa.pub authorized_keys
2.2 用root用户登录修改SSH配置文件"/etc/ssh/sshd_config"的下列内容
检查下面几行前面"#"注释是否取消掉:
RSAAuthentication yes # 启用 RSA 认证
PubkeyAuthentication yes # 启用公钥私钥配对认证方式
AuthorizedKeysFile .ssh/authorized_keys # 公钥文件路径
修改完后,重启ssh服务生效:
service sshd restart
2.3 测试hadoop用户是否能够不用密码直接登录
root先切换到hadoop账号,su - hadooop
然后hadoop用户执行 ssh localhost
如果不用输入密码,则设置成功。
hadoop用户执行sudo su - 不需要输入密码,直接切换到root账号
[hadoop@namenode ~]$ sudo su - [root@namenode ~]# [root@namenode ~]# who root pts/0 2016-03-23 23:18 (192.168.1.100) [root@namenode ~]#
3.配置master、Client1和client2能相互免密码ssh登录
3.1 client2和client2生成公钥并上传到master服务器
用hadoop账号登录Client1和client2;
分别执行这个个命令,并分别把自己的公钥传到master服务器
登录client1和client2执行:ssh-keygen –t rsa
登录client1上传公钥master:
Scp /home/Hadoop/.ssh/id_rsa.pub hadoop@master:/home/hadoop/.ssh/id_rsa.pubClient1
登录client2上传公钥到master:
Scp /home/Hadoop/.ssh/id_rsa.pub hadoop@master:/home/hadoop/.ssh/id_rsa.pubClient2
3.2 把client1和client2的公钥添加到master服务器上的authorized_keys这个文件里
Cat id_rsa.pubClient1 >> authorized_keys
Cat id_rsa.pubClient2 >> authorized_keys
这样authorized_keys文件里就包含了master、client1和client2的hadoop用户的公有密钥,再把这个文件上传到client1和client2对应的目录下。
4. 验证
在其中一台服务器上可以使用ssh hadoop@ip或主机名的方式登录到另外两台服务器上,不需要输入密码。
5. 使用root账号修改sudoers配置文件
vi /etc/sudoers --root账号修改,增加以下两项
hadoop ALL=(ALL) ALL
hadoop ALL=(ALL) NOPASSWD: ALL