112 lines
3.9 KiB
Markdown
112 lines
3.9 KiB
Markdown
# linux 免密登录
|
||
|
||
|
||
|
||
为了保证一台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文件中
|
||
|
||
```sh
|
||
cat ~/.ssh/id_rsa.pub > ~/.ssh/authorized_keys
|
||
```
|
||
|
||
- 将公钥分发给zimug2、zimug3主机。按提示输入kafka登陆密码
|
||
|
||
```sh
|
||
ssh-copy-id -i ~/.ssh/id_rsa.pub -p22 kafka@zimug2;
|
||
```
|
||
|
||
需要分开执行,因为需要输入密码。
|
||
|
||
```sh
|
||
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
|
||
> |