配置master无密码登陆所有的slave

时间:2022-11-07 19:54:57

1.SSH无密码原理

master(NameNode | JobTracker)作为客户端,要实现无密码公钥认证,连接到服务器salve(DataNode | Tasktracker)上时,需要在master上生成一个密钥对,包括一个公钥和一个私钥,而后将公钥复制到所有的slave上。当master通过SSH连接salve时,salve就会生成一个随机数并用master的公钥对随机数进行加密,并发送给master。master收到加密数之后再用私钥解密,并将解密数回传给slave,slave确认解密数无误之后就允许master进行连接了。这就是一个公钥认证过程,其间不需要用户手工输入密码。重要过程是将客户端master复制到slave上。

2.master机器上生成密码对

首先关闭 selinux(所有机器上执行)

配置master无密码登陆所有的slave

日期同步(所有机器上执行)

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

在master节点上执行以下命令:

ssh-keygen -t rsa -P '' 

配置master无密码登陆所有的slave

这条命是生成其无密码密钥对,询问其保存路径时直接回车采用默认路径。生成的密钥对:id_rsa和id_rsa.pub,默认存储在"/root/.ssh"目录下。 

配置master无密码登陆所有的slave

接着在Master节点上做如下配置,把id_rsa.pub追加到授权的key里面去。

vim /root/.ssh/authorized_keys   #创建一个空文件
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

在验证前,需要做两件事儿。第一件事儿是修改文件"authorized_keys"权限(权限的设置非常重要,因为不安全的设置安全设置,会让你不能使用RSA功能),另一件事儿是用root用户设置"/etc/ssh/sshd_config"的内容。使其无密码登录有效。

(1).修改文件"authorized_keys"
chmod 600 ~/.ssh/authorized_keys

配置master无密码登陆所有的slave

备注:如果不进行设置,在验证时,扔提示你输入密码

(2).设置SSH配置
vim /etc/ssh/sshd_config

启用并修改以下三个选项

RSAAuthentication yes # 启用 RSA 认证
PubkeyAuthentication yes # 启用公钥私钥配对认证方式
AuthorizedKeysFile /root/.ssh/authorized_keys # 公钥文件路径(和上面生成的文件同)

配置master无密码登陆所有的slave

设置完之后记得重启SSH服务,才能使刚才设置有效

service sshd restart

户验证是否成功

ssh localhost

配置master无密码登陆所有的slave

从上图中得知无密码登录本级已经设置完毕,接下来的事儿是把公钥复制所有的slave机器上。使用下面的命令格式进行复制公钥:

把master上的公钥复制到node1上,复制文件"id_rsa.pub"到服务器IP为"10.2.10.102"的用户为"root"的"~/"下面

scp ~/.ssh/id_rsa.pub  root@10.2.10.102:~/

登陆node1,并且在/root下创建.ssh

mkdir ~/.ssh

然后是修改文件夹".ssh"的用户权限,把他的权限修改为"700"

chmod 700 ~/.ssh

追加到授权文件"authorized_keys",到目前为止master的公钥也有了,文件夹".ssh"也有了,且权限也修改了。这一步就是把master的公钥追加到node1的授权文件"authorized_keys"中去。使用下面命令进行追加并修改"authorized_keys"文件权限

cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

修改"/etc/ssh/sshd_config",具体步骤参考前面master的"设置SSH配置",具体分为两步:第1是修改配置文件;第2是重启SSH服务。