3.9 KiB
linux 免密登录
为了保证一台Linux主机的安全,每个主机登录的时候都需要账号密码。但是很多时候为了操作方便,需要设置集群互信主机之间的SSH免密码登录。
一、公钥与私钥
大家可能都知道密钥的概念,在传统的加密算法中,加密和解密使用的是同一个密钥,一旦该密钥泄露,那么加密内容将被破解。通常在现代密码体系中加密和解密是采用不同的密钥,也就是大家经常听说到的非对称加密。
非对称加密算法的公钥私钥的原则:
- 一个公钥对应一个私钥,二者是成对出现的。
- 公钥私钥密钥对需要有一个发布方,发布方自己保存的密钥通常被称为私钥,公开发布给其他方使用的密钥被称为公钥。
- 公钥加密结果,对应的私钥能解;私钥加密结果,对应的的公钥能解。
二、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免密登录互通互联。
字母歌-kafka修炼之道 https://www.kancloud.cn/hanxt/kafka/2588987