Step2—免密登陆认证
# 一、免密登录认证 🔐
在多台服务器协同工作的环境中,免密登录(SSH 免密认证)是一种常见的优化手段,能够极大地提升运维效率,避免频繁输入密码带来的不便,同时加强自动化管理能力。
# 1. 什么是免密登录? 🤔
免密登录(SSH 免密认证)是一种 基于公私钥的身份认证机制,允许用户在不同服务器之间 无需输入密码 直接登录远程机器。这种方式利用 SSH 密钥对 来进行身份验证,相比传统的密码认证方式更加安全高效。
通常,SSH 免密认证涉及两个关键文件:
- 私钥(Private Key):存放在客户端,用户持有并保密
- 公钥(Public Key):存放在目标服务器上,用于匹配客户端的私钥
当用户尝试连接服务器时,SSH 客户端会使用私钥进行加密认证,而服务器会验证该私钥是否匹配已存储的公钥,从而决定是否允许访问。
# 2. 为什么要使用免密登录? 🚀
在多台服务器的管理环境中,免密登录具有以下 明显的优势:
优势 | 描述 |
---|---|
提高运维效率 ⏳ | 免去手动输入密码的步骤,特别是在批量管理多台服务器时,提高 SSH 连接的便捷性 |
适用于自动化任务 🤖 | 例如 Ansible、Shell 脚本、远程执行命令等场景,SSH 免密登录可以确保任务的自动执行 |
增强安全性 🔐 | 由于不依赖密码登录,避免了因密码泄露或弱密码导致的安全风险 |
无交互式认证 📡 | 适用于 无 UI 的环境(如 Docker 容器、远程服务器管理) |
在多机环境(如 Kubernetes、Hadoop、Spark 集群)中,免密认证是 必须配置的基础组件,否则很多自动化任务将无法运行。
# 3. 如何实现免密登录? 🔑
我们书接上回,仍然以 3 台 CentOS 7.9 服务器 为例,分别命名为 dev1
、dev2
、dev3
,配置 SSH 免密登录,使 dev1
可以无密码登录 dev2
和 dev3
。
# 步骤概览
- 在
dev1
生成 SSH 密钥对 - 将
dev1
的公钥复制到dev2
和dev3
- 测试免密登录
# 第一步:生成 SSH 密钥对
在 dev1
上执行以下命令:
ssh-keygen -t rsa -b 2048 -f ~/.ssh/id_rsa -N ''
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa
chmod 644 ~/.ssh/id_rsa.pub
1
2
3
4
2
3
4
这将生成一对 SSH 密钥:
- 私钥:存放在
~/.ssh/id_rsa
(务必保密) - 公钥:存放在
~/.ssh/id_rsa.pub
(可分发)
# 第二步:分发公钥到 dev2
和 dev3
使用 ssh-copy-id
命令将公钥添加到远程服务器:
# 直接复制即可,自己添加自己也无妨
ssh-copy-id -i ~/.ssh/id_rsa.pub dev1
ssh-copy-id -i ~/.ssh/id_rsa.pub dev2
ssh-copy-id -i ~/.ssh/id_rsa.pub dev3
1
2
3
4
2
3
4
执行该命令后,公钥会被自动追加到目标服务器的 ~/.ssh/authorized_keys
文件中。
提示: 如果
ssh-copy-id
命令不可用,可以手动复制id_rsa.pub
的内容到dev2
和dev3
的~/.ssh/authorized_keys
。
# 第三步:测试免密登录
在 dev1
上尝试登录 dev2
和 dev3
:
ssh dev2
ssh dev3
1
2
2
如果一切正常,你应该可以直接登录,无需输入密码。
注意:你需要所有机器都完成免密登陆
🚀 至此,服务器之间的 SSH 免密认证已经完成,欢迎在实践中进一步优化!