Oracle 19c安装程序实际检测scp文件传输连通性而非仅ssh命令,因OpenSSH 8.0+输出格式变更致解析失败而报INS-06006;必须用rsa-2048密钥、严格权限、全节点自连与互连,并禁用.ssh/config全局配置。
Oracle 19c安装程序实际在测什么
它不只跑 ssh node date,还会调用 scp 传文件做连通性验证。openssh 8.0+(如 rhel 8.3 / ol8 默认)的 scp 输出格式变了,oracle 安装器解析失败,直接判为“互信未建立”——哪怕你手工 ssh node date 全部成功,也会报 [ins-06006]。
为什么 ssh-keygen -t rsa -b 2048 是硬性要求
Oracle 19c(尤其 GI 部分)根本不识别 ed25519 密钥。OpenSSH 8.0+ 默认生成 ed25519,ssh-copy-id 会静默失败或报 no mutual signature algorithm。必须显式指定:
ssh-keygen -t rsa -b 2048 -f ~/.ssh/id_rsa -N ""- 私钥权限必须是
600,公钥必须是644,否则sshd拒绝加载 -
$(hostname)和localhost都得进ssh-copy-id目标列表,缺一不可
/usr/bin/scp 替换是临时但最有效的绕过方式
不是修 SSH,而是让 Oracle 调用的 scp 行为回归旧版:
- 先备份:
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 -
-T关闭伪终端,强制原始传输模式,骗过 Oracle 的输出解析逻辑
这个操作必须在所有节点执行,且安装完成后立刻恢复原 scp,否则影响系统其他依赖 scp 的工具。
最容易被忽略的配置点:~/.ssh/config
哪怕密钥和网络都对,只要 ~oracle/.ssh/config 里有 Host * 或 StrictHostKeyChecking no,cluvfy 就会报 PRVF-7532 并拒绝继续。临时方案是:
mv ~/.ssh/config ~/.ssh/config.bak- 绝对不要在 RAC 环境中保留全局
Host *块 - Oracle 内部脚本对 SSH 配置极其敏感,它不走标准 OpenSSH 流程,而是自己解析并注入参数
真正卡住人的从来不是密钥生成,而是这些看似无关的细节能让整个预检查彻底失效。











