配置Ssh免密码登录

配置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

原文地址:https://www.cnblogs.com/rusking/p/5285867.html