📌 一、SSH 证书认证(免密登录)完整步骤
我们以openEuler 系统为例,假设三台机器信息如下:
- test01:
192.168.190.143 - test02:
192.168.190.144 - test03:
192.168.190.145(你可以替换为自己的 IP)
1. 规划与准备
- 目标:三台机器之间能相互免密 SSH 登录
- 前提:三台机器网络互通(可以互相
ping通)
建议:在三台机器上创建相同的普通用户(如lcy),避免直接用root操作(更安全)
2. 创建统一账号(在三台机器分别执行)
运行
# 创建用户 lcy useradd lcy # 设置密码(按提示输入两次) passwd lcy若已存在相同账号,可跳过此步。
3. 生成密钥对(在每台机器上执行)
切换到目标用户(如lcy),生成 RSA 密钥对:
运行
# 切换用户 su - lcy (这个是普通用户,权限较低) # 生成密钥对(一路回车,默认即可,不需要设置密码) ssh-keygen -t rsa注释
执行后会在~/.ssh/目录下生成:
id_rsa:私钥(务必妥善保管,不要泄露)id_rsa.pub:公钥(需要分发到其他机器)
4. 分发公钥到其他机器(实现免密)
在每台机器上,将自己的公钥发送到另外两台机器:
以 test01 为例:
需要注意两点
1.在最高权限root管理员操作下述步骤,只能实现三台虚拟机的root管理员之间的免密登录;而在lcy普通用户执行下述命令,则只能实现三台虚拟机的普通用户之间的免密登录,不能实现跨用户的免密登录。
2.如果只在test01给test02、test03发送公钥,只能实现01--去往02、01--去往03的免密登录,而02--去往03等则需要输入密码。如果在test、test02、test03都发送公钥,则能实现全部免密码登录。
运行
# 将 test01 的公钥发送到 test02 ssh-copy-id lcy@192.168.190.144 /*ssh-copy-id这行代码没有空格*/ # 将 test01 的公钥发送到 test03 ssh-copy-id lcy@192.168.190.145在 test02 上执行:
运行
ssh-copy-id lcy@192.168.190.143 ssh-copy-id lcy@192.168.190.145在 test03 上执行:
运行
ssh-copy-id lcy@192.168.190.143 ssh-copy-id lcy@192.168.190.144执行时需要输入目标机器的用户密码,执行成功后,后续登录就不需要再输密码了。
5. 验证免密登录
在任意一台机器上,尝试 SSH 连接另外两台:
运行
# 从 test01 登录 test02 ssh lcy@192.168.190.144 # 从 test01 登录 test03 ssh lcy@192.168.190.145如果直接登录成功,没有提示输入密码,说明免密配置完成 ✅
📌 二、软件仓库配置(VMware NAT 模式)
根据笔记要求,先确保虚拟机网络与网关一致:
1. 检查并配置 VMware 虚拟网络
- 打开 VMware → 编辑 → 虚拟网络编辑器
- 选择
VMnet8(NAT 模式) - 点击「NAT 设置」,记录网关 IP(通常为
192.168.190.2或类似) - 确保 openEuler 虚拟机的网络配置中,网关与上述一致:运行
# 编辑网卡配置文件(文件名可能为 ifcfg-ens33 等) vi /etc/sysconfig/network-scripts/ifcfg-ens33确保GATEWAY字段与 VMware NAT 网关相同,例如:ini
GATEWAY=192.168.190.2- 重启网络服务:运行
sudo systemctl restart NetworkManager2. 重启终端并验证 Ansible 软件源
运行
# 重启终端后,检查 Ansible 源是否配置 sudo dnf list | grep ansible如果能看到 ansible 相关包,说明软件仓库配置正常;若找不到,需要先配置 openEuler 官方或第三方仓库。
💡 常见问题排查
- 免密登录仍提示输入密码
- 检查
~/.ssh/authorized_keys权限:运行
- 检查
chmod 600 ~/.ssh/authorized_keys chmod 700 ~/.ssh- 确保公钥已正确写入目标机器的
authorized_keys文件
- 确保公钥已正确写入目标机器的
- 网络不通
- 用
ping测试目标 IP 是否通 - 检查防火墙:
sudo systemctl stop firewalld(临时关闭测试)
- 用
- 软件包找不到
- 确保已启用
EPEL或 openEuler 官方仓库:运行
- 确保已启用
sudo dnf install -y https://mirrors.aliyun.com/epel/epel-release-latest-8.noarch.rpm✅ 最终效果
- 三台 openEuler 机器之间可以用
ssh 用户名@IP直接免密登录 - 软件仓库正常,可通过
dnf安装 ansible 等工具