INS-06006错误根源是Oracle 19c安装程序依赖OpenSSH旧版scp输出格式,而OpenSSH 8.0+变更格式致解析失败;须用rsa-2048密钥、禁用.ssh/config全局配置、替换scp为带-T参数的脚本,并确保所有节点自连与互连均通。
Oracle 19c RAC预检查报INS-06006,不是SSH没配好,是scp输出变了
oracle 19c安装程序在“ssh connectivity”检查阶段,实际调用scp传输测试文件,并依赖其输出格式做解析。openssh 8.0+(如rhel 8.3/ol8默认)修改了scp的进度输出行为,导致oracle无法识别成功响应,直接判定互信失败——哪怕你手工执行ssh node date全部返回正常,也会卡在ins-06006。
这不是密钥问题,也不是网络不通,而是工具链底层协议演进与老安装器硬编码逻辑之间的错位。
-
ssh -V返回OpenSSH_8.x就是根源信号 - 错误常伴随
INS-44015(本机不通)和INS-06003(双向失败),说明校验逻辑已全面触发 - 不要花时间反复重跑
ssh-keygen或ssh-copy-id——只要scp -T不生效,重配无效
必须用ssh-keygen -t rsa -b 2048,ed25519密钥会被Grid Infrastructure静默忽略
Oracle 19c GI组件(尤其是cluvfy和root.sh)完全不识别ed25519密钥。而OpenSSH 8.0+默认生成ed25519,ssh-copy-id会因签名算法不匹配而静默失败,或报no mutual signature algorithm。
- 显式执行:
ssh-keygen -t rsa -b 2048 -f ~/.ssh/id_rsa -N "" - 检查权限:
ls -l ~/.ssh/id_rsa*→ 私钥必须600,公钥必须644 -
$(hostname)和localhost都必须出现在ssh-copy-id目标列表中,缺一不可 - 别用
ssh-copy-id -f覆盖,先清空~/.ssh/authorized_keys再逐个追加,避免混入旧密钥干扰
~/.ssh/config里有Host *或StrictHostKeyChecking no会触发PRVF-7532
Oracle内部脚本不走标准OpenSSH配置加载流程,而是自己解析~/.ssh/config并注入参数。一旦发现全局Host *块、ProxyCommand或IdentityFile覆盖,就会拒绝继续,报PRVF-7532: Failed to connect to node。
- 临时移走配置:
mv ~/.ssh/config ~/.ssh/config.bak - 绝对不要写
StrictHostKeyChecking no——cluvfy视其为安全风险,直接终止 - 如果开发环境共用账号,至少确保
config中对RAC节点无任何Host段定义
最有效的绕过方式:替换/usr/bin/scp,强制启用-T
不降级OpenSSH,也不等补丁,直接让Oracle调用的scp回归旧版行为。原理是用-T禁用伪终端,消除输出格式差异,骗过Oracle的解析逻辑。
- 备份原命令:
sudo mv /usr/bin/scp /usr/bin/scp.orig - 新建
/usr/bin/scp,内容仅一行:#!/bin/bash /usr/bin/scp.orig -T "$@" - 设权限:
sudo chmod 555 /usr/bin/scp - 所有节点都要执行,且
gridSetup.sh运行前完成 - 安装完成后立刻恢复:
sudo mv /usr/bin/scp.orig /usr/bin/scp,否则影响rsync、ansible等依赖scp的工具
真正卡住人的从来不是密钥生成,而是scp输出格式、~/.ssh/config的隐式覆盖、以及$(hostname)与/etc/hosts映射不一致这三处细节——它们共同构成一个“全通才有效”的验证闭环,漏掉任意一环,cluvfy都会拒绝放行。











