article/linux/linux免密登录.md
2022-11-01 22:55:36 +08:00

112 lines
3.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# linux 免密登录
为了保证一台Linux主机的安全每个主机登录的时候都需要账号密码。但是很多时候为了操作方便需要设置集群互信主机之间的SSH免密码登录。
## 一、公钥与私钥
大家可能都知道密钥的概念,在传统的加密算法中,加密和解密使用的是同一个密钥,一旦该密钥泄露,那么加密内容将被破解。通常在现代密码体系中加密和解密是采用不同的密钥,也就是大家经常听说到的**非对称加密**。
**非对称加密算法的公钥私钥的原则:**
1. 一个公钥对应一个私钥,二者是成对出现的。
2. 公钥私钥密钥对需要有一个发布方,发布方自己保存的密钥通常被称为私钥,公开发布给其他方使用的密钥被称为公钥。
3. 公钥加密结果,对应的私钥能解;私钥加密结果,对应的的公钥能解。
## 二、ssh免密登录原理
![img](http://pic.61dz.com/pic/047a86faccdcd3868a806f285067c482)
- 如果host1希望免密登录host2那么密钥对是host1发布的。
- 让host2信任host1的公钥host1即可免密登录host2。所以host1需要将自己的公钥在host2服务器上保存一份复制密钥
## 三、密钥文件
在被SSH登录的主机中都有一个存储来登录的主机的公钥的文件它的名字叫做authorized_keys它的位置就在`/<登录用户根目录>/.ssh`目录中(注:如果这台主机没有被设置任何免秘钥登录,这个文件缺省是不存在的)
![img](http://pic.61dz.com/pic/96e41f3b1263479ec15bf8bb89a21275_1034x256.png)
在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
```
出现提示输入信息,一路回车即可。
![img](http://pic.61dz.com/pic/aa7e8008b5b53458903f79708f9ba4ec_829x466.png)
执行完成之后,我们会在`/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
>