ssh端口变动(非默认22),造成预安装脚本失败

预安装脚本或者系统环境参数里,如何调整ssh端口的相关配置(22改为所需端口),执行预安装脚本。

答案内容由AI生成,仅供参考:

总结

gs_preinstall 脚本通过 gs_ssh 工具在集群节点间建立SSH互信。如果系统SSH端口已更改,最根本的解决方法是在 cluster_config.xml 配置文件中正确设置 SshPort 参数,使其与实际的SSH服务端口(如60022)保持一致。仅设置环境变量 SSH_PORT 可能不足以解决问题,因为 gs_preinstall 的首要依据是XML配置文件。确保配置文件、系统服务和网络连通性三者协同,即可成功完成预安装。

点击此处查看详细分析解答

SSH端口非默认(非22)导致openGauss预安装失败的解决方案

当SSH服务使用的端口不是默认的22端口时,执行openGauss的gs_preinstall预安装脚本会因无法通过SSH建立节点间的互信而失败。错误信息如 [GAUSS-51220] : Unable to connect to [IP]: [Errno 111] Connection refused 明确表明脚本尝试连接目标节点的SSH服务时被拒绝,这通常是因为脚本仍在尝试连接默认的22端口,而实际的SSH服务运行在自定义端口上(如问题中的60022)。

问题根源分析

从提供的上下文信息可以看出,核心问题是配置不匹配

  1. 环境中已通过 export SSH_PORT=60022 配置了自定义SSH端口。
  2. openGauss的安装配置文件 Cluster_Config.Xml 中,可能未正确指定该自定义的SSH端口,导致 gs_preinstall 脚本和其依赖的 gs_ssh 工具在内部仍使用22端口进行连接。
  3. 根据知识图谱信息,Cluster_Config.Xml 文件中有一个名为 SshPort 的配置参数用于定义SSH端口,如果该参数未设置或设置错误,就会导致 GAUSS-51258 或类似的SSH连接错误。

解决方案

要解决此问题,必须确保 gs_preinstall 脚本、gs_ssh 工具以及系统环境三者之间使用的SSH端口保持一致。具体步骤如下:

1. 配置 cluster_config.xml 文件中的SSH端口

这是最关键的一步。必须在你的 cluster_config.xml 配置文件中明确指定自定义的SSH端口号。

  • 查找并修改参数:在 cluster_config.xml 文件中找到与SSH端口相关的配置项。根据知识图谱,相关参数为 SshPort

  • 设置正确的值:将 SshPort 的值修改为你的自定义端口号(例如 60022)。

    <!-- 示例:在 cluster_config.xml 中配置自定义SSH端口 -->
    <parameter name="SshPort" value="60022"/>
    
  • 验证配置:修改后,仔细检查文件是否有语法错误,并确保所有目标节点的IP地址和端口号配置正确。

2. 确保SSH服务在目标节点正确运行

  • 检查SSH服务状态:在目标节点(IP: 145.30.42.122)上,确认SSH服务已经启动并正在监听自定义端口。

    systemctl status sshd
    
  • 检查端口监听:使用 netstatss 命令检查端口 60022 是否处于监听状态。

    netstat -tuln | grep 60022
    # 或
    ss -tuln | grep 60022
    
  • 测试SSH连接:在本地节点手动使用 ssh 命令测试到目标节点的连接:

ssh -p 60022 root@145.30.42.122

如果手动能连接成功,说明网络和SSH服务无问题,问题一定出在 gs_preinstall 脚本的配置上。

3. 确保环境变量持久化 (可选但推荐)

虽然在执行脚本前临时设置 export SSH_PORT=60022 可能有效,但为了确保其被正确读取,最好将该环境变量写入全局配置文件。

  • 写入 /etc/profile
    echo "export SSH_PORT=60022" >> /etc/profile
    source /etc/profile
    

4. 执行预安装脚本

完成以上配置后,再次运行 gs_preinstall 脚本。

./gs_preinstall -U omm -G dbgrp -X /data/apps/soft/cluster_config.xml

总结

gs_preinstall 脚本通过 gs_ssh 工具在集群节点间建立SSH互信。如果系统SSH端口已更改,最根本的解决方法是在 cluster_config.xml 配置文件中正确设置 SshPort 参数,使其与实际的SSH服务端口(如60022)保持一致。仅设置环境变量 SSH_PORT 可能不足以解决问题,因为 gs_preinstall 的首要依据是XML配置文件。确保配置文件、系统服务和网络连通性三者协同,即可成功完成预安装。

版本6.0.3LTS ,ssh -p端口的免密已经配置,不生效,cluster_config.xml中的ssh_port 配置后也不好使。现在想明确一下该版本到底支不支持自定义ssh。

支持自定义ssh端口是从7.0.0-RC1版本开始有的,6.0.3没有该功能。支持自定义ssh端口 | openGauss文档 | openGauss社区