【kafka专栏】生产级集群安装主机之间ssh免密登录


为了保证一台Linux主机的安全,每个主机登录的时候都需要账号密码。但是很多时候为了操作方便,需要设置集群互信主机之间的SSH免密码登录。

一、公钥与私钥

大家可能都知道密钥的概念,在传统的加密算法中,加密和解密使用的是同一个密钥,一旦该密钥泄露,那么加密内容将被破解。通常在现代密码体系中加密和解密是采用不同的密钥,也就是大家经常听说到的非对称加密

非对称加密算法的公钥私钥的原则:

  1. 一个公钥对应一个私钥,二者是成对出现的。
  2. 公钥私钥密钥对需要有一个发布方,发布方自己保存的密钥通常被称为私钥,公开发布给其他方使用的密钥被称为公钥。
  3. 公钥加密结果,对应的私钥能解;私钥加密结果,对应的的公钥能解。

二、ssh免密登录原理

  • 如果host1希望免密登录host2,那么密钥对是host1发布的。
  • 让host2信任host1的公钥,host1即可免密登录host2。所以host1需要将自己的公钥,在host2服务器上保存一份(复制密钥)

三、密钥文件

在被SSH登录的主机中,都有一个存储来登录的主机的公钥的文件,它的名字叫做authorized_keys,它的位置就在/<登录用户根目录>/.ssh目录中(注:如果这台主机没有被设置任何免秘钥登录,这个文件缺省是不存在的)

在这里插入图片描述

在authorized_keys文件中,存储着能够登录本地主机的其他各个主机的身份信息。如果使用rsa算法生成的密钥,文件的存储格式都是以ssh-rsa开头的一组字符串。

四、密码生成与密钥分发(免密登录)

4.1.环境准备

主机环境

ip 主机名称 规划用户
192.168.1.111 zimug1 kafka
192.168.1.112 zimug2 kafka
192.168.1.113 zimug3 kafka

4.2.生成密钥对

因为我们后续为了搭建kafka集群,并且使用的kafka用户,所以生成密钥对之前用kafka用户登录主机。首先在zimug1主机执行下面的命令。

ssh-keygen -t rsa

出现提示输入信息,一路回车即可。

在这里插入图片描述

执行完成之后,我们会在/home/kafka/.ssh目录下看到下面的这两个文件。通常认为前者是公钥,后者是私钥。

id_rsa.pub
id_rsa

4.3.密钥处理

  • 将公钥保存到authorized_keys文件中
cat ~/.ssh/id_rsa.pub > ~/.ssh/authorized_keys
  • 将公钥分发给zimug2、zimug3主机。按提示输入kafka登陆密码
ssh-copy-id -i ~/.ssh/id_rsa.pub -p22 kafka@zimug2;

需要分开执行,因为需要输入密码。

ssh-copy-id -i ~/.ssh/id_rsa.pub -p22 kafka@zimug3;

这样,我们zimug1免密登录zimug2、zimug3的配置工作就完成了。

4.4.免密登录测试

在zimug1主机上登录zimug2(或zimug3)主机,输入如下命令,不需要输入密码。你会发现登录主机的切换如下,不需要密码就完成登陆了。

[kafka@zimug1 ~]$ ssh kafka@zimug2
Last login: Sat Feb 19 22:07:13 2022 from 192.168.137.10
[kafka@zimug2 ~]$ 

如果想退回到zimug1服务器,使用exit命令。

如果此时你执行免密登陆测试失败,请执行这三个命令修改主目录及文件权限。如果还不行,重新执行上面的步骤。

chmod 755 ~/;
chmod 700 ~/.ssh/;
chmod 600 ~/.ssh/authorized_keys;

4.5 服务器重复操作

在zimug2、zimug3服务器上重复以上步骤,就可以完全实现三台服务器之间ssh免密登录互通互联。

猜你喜欢

转载自blog.csdn.net/hanxiaotongtong/article/details/124876076