一、问题原因
- 用户等效性:指同一用户在集群所有节点上拥有相同的 UID、GID、家目录权限,且能通过 SSH 无密码登录所有节点(含本机)Oracle
- 常见失败场景:
- SSH 互信未配置或配置不完整
- .ssh 目录 / 文件权限错误(非 700/600)
- 密钥类型不兼容(Oracle 推荐 RSA,避免 ed25519)
- 主机名解析问题(/etc/hosts 配置错误)
- 节点到自身的 SSH 连接失败
二、快速诊断(先定位问题)
以 oracle 用户登录所有节点,执行以下命令:
# 1. 检查本机SSH连接(最容易忽略)
ssh localhost date # 应无密码直接返回日期
ssh $(hostname) date # 同上# 2. 检查节点间互信(假设有node1和node2)
ssh node1 date # 从node2到node1
ssh node2 date # 从node1到node2# 3. 检查权限(关键!)
ls -ld ~/.ssh # 必须是 drwx------ (700)
ls -l ~/.ssh/authorized_keys # 必须是 -rw------- (600)# 4. 检查密钥类型
cat ~/.ssh/id_rsa.pub # 开头应为 ssh-rsa
三、完整解决步骤(手动配置 SSH 互信)
1. 准备工作(所有节点)
su - oracle # 切换到oracle用户
mkdir -p ~/.ssh # 创建.ssh目录
chmod 700 ~/.ssh # 严格权限
rm -f ~/.ssh/* # 清空旧密钥(可选,建议重新配置)
2. 生成 RSA 密钥(所有节点)
ssh-keygen -t rsa -b 2048 -N "" -f ~/.ssh/id_rsa
# -t rsa:指定RSA算法(Oracle兼容)
# -b 2048:密钥长度
# -N "":空密码(必须)
# -f:指定密钥文件名
3. 合并公钥(关键步骤)
假设集群有 node1 和 node2 两个节点:
在 node1 执行:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
ssh node2 "cat ~/.ssh/id_rsa.pub" >> ~/.ssh/authorized_keys
在 node2 执行:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
ssh node1 "cat ~/.ssh/id_rsa.pub" >> ~/.ssh/authorized_keys
4. 同步 authorized_keys 到所有节点
# 从node1同步到node2
scp ~/.ssh/authorized_keys node2:~/.ssh/# 所有节点设置权限
chmod 600 ~/.ssh/authorized_keys
5. 验证配置(所有节点)
# 验证所有连接(无密码即成功)
ssh node1 date
ssh node2 date
ssh localhost date
ssh $(hostname) date# 测试预检查命令(可选)
./runcluvfy.sh stage -pre crsinst -n node1,node2 -verbose
