银河麒麟V10系统安装oceanbase时关闭usePAM就无法通过预检查,开启usePAM又无法远程登陆

【 使用环境 】银河麒麟V10操作系统 arm64架构
【 使用版本 】oceanbase 4.2.1
【问题描述】进行oceanbase集群部署,在中控机上启用图形化界面部署时预检查出现如下问题:
10.20是我的中控机,10.122和10.123是我的服务机,10.122顺利的通过了预检查,但10.123开启usePAM后会提示中控机无法远程连接,注释掉usePAM后又会提示usePAM未开启而无法通过预检查,现在不知道该如何修改。希望各位专家有了解Linux这方面的能帮助一下楼主。
【附件及日志】

1 个赞

配置一下节点ssh免密

1 个赞

obd 版本是多少
obd --version

1 个赞

obd版本是3.3.0

2 个赞

PermitRootLogin是开启的,sshd.config的内容和另一台设备是一模一样的,应该不是sshd的配置问题

1 个赞

看到你三个节点,2个节点都通过检查了,另外一个节点没有通过联通性检查。 排查思路可以看这台机器和另外2台的区别 如:
ssh 版本,配置
ip绑定的网卡
操作系统版本

另外可以

  1. 通过obd 中控机 手动做一下联通行测试 ssh root@192.168.1.123
  2. 关掉usePAM 看下obd 预检查报错日志 位置在~/.obd/log/obd
2 个赞

没后续了?

1 个赞

学习一下

1 个赞

一、先明确核心原理:OB 预检查为何要求开启 usePAM?

OceanBase 预检查要求服务机开启usePAM yes,是因为 OB 部署依赖 SSH 的完整认证兼容性(包括密钥免密登录、PAM 模块协同),避免因 SSH 认证机制缺失导致部署过程中权限校验失败。
10.123 开启 usePAM 后无法远程连接,本质是/etc/pam.d/sshd(SSH 的 PAM 配置文件)存在错误配置,导致 PAM 模块加载失败,进而阻断 SSH 连接。

二、分步解决:先确保开启 usePAM,再修复远程连接问题

步骤 1:备份关键配置文件(避免修改出错)

在服务机 10.123 上执行,备份 SSH 和 PAM 的核心配置:

bash

# 备份SSH配置文件
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
# 备份SSH的PAM配置文件
cp /etc/pam.d/sshd /etc/pam.d/sshd.bak

步骤 2:正确配置 SSH 的 sshd_config(开启 usePAM 并协同相关参数)

编辑服务机 10.123 的/etc/ssh/sshd_config,确保以下参数配置正确(无关参数保持默认):

bash

vi /etc/ssh/sshd_config

关键参数配置(需手动确认或修改):

ini

# 1. 必须开启usePAM(满足OB预检查要求)
UsePAM yes

# 2. 允许密钥认证(OB部署依赖中控机免密登录,必须开启)
PubkeyAuthentication yes

# 3. 密码认证按需开启(测试阶段可开启,方便排查;生产建议关闭)
PasswordAuthentication yes

# 4. 关键:ChallengeResponseAuthentication需与PAM协同(若开启usePAM,此参数需设为yes)
ChallengeResponseAuthentication yes

# 5. 禁止空密码登录(安全要求,不影响OB部署)
PermitEmptyPasswords no

注意:ChallengeResponseAuthentication若设为no,即使开启 usePAM,PAM 模块也无法正常触发,可能导致 OB 预检查仍报错。

步骤 3:修复 PAM 配置(/etc/pam.d/sshd)—— 解决开启 usePAM 后无法连接的核心

开启 usePAM 后 SSH 连接失败,90% 是/etc/pam.d/sshd配置缺失或错误(如缺少必要 PAM 模块、模块路径错误)。
编辑服务机 10.123 的/etc/pam.d/sshd,保留以下最小化正确配置(删除或注释其他冗余 / 错误行):

bash

vi /etc/pam.d/sshd

配置内容(银河麒麟 V10 默认有效配置,适配 arm64):

ini

# 1. 认证阶段:允许密码和密钥认证(核心模块,不可缺失)
auth       include      system-remote-login
# 若上述行存在问题,可替换为明确的模块(备用方案):
# auth       required    pam_sepermit.so
# auth       include      password-auth

# 2. 账户阶段:校验用户账户有效性(如是否锁定)
account    include      system-remote-login

# 3. 会话阶段:初始化SSH会话(如环境变量、日志)
session    include      system-remote-login

关键:删除任何包含pam_deny.so(拒绝认证)、pam_succeed_if.so(不合理条件判断)的错误行,这些是导致连接失败的常见原因。

步骤 4:重启 SSH 服务并测试连接

在服务机 10.123 上重启 sshd 服务,确保配置生效:

bash

# 银河麒麟V10用systemd管理服务
systemctl restart sshd
# 检查sshd状态(确保显示active (running))
systemctl status sshd

测试中控机(10.20)到服务机(10.123)的连接
在中控机 10.20 上执行,验证是否能正常远程登录(免密或密码登录均可):

bash

# 测试密码登录(替换为10.123的实际用户名,如root)
ssh root@10.123
# 若已配置免密,测试免密登录(无需输密码直接进入)
ssh root@10.123
  • 若能正常登录,说明usePAM yes已生效且不影响连接;
  • 若仍无法登录,查看 SSH 日志定位问题(日志路径:/var/log/secure,搜索 “sshd” 关键词,如tail -f /var/log/secure | grep sshd)。

步骤 5:重新执行 OB 预检查

在中控机 10.20 上重新触发对 10.123 的预检查,此时应满足:

  1. usePAM 已开启(符合预检查要求);
  2. 中控机可正常远程连接 10.123(无连接失败);
  3. 预检查顺利通过。

三、额外注意:银河麒麟 V10 的特殊配置(避坑点)

  1. SELinux 状态检查
    若 SELinux 开启且策略严格,可能阻断 SSH-PAM 联动,可临时关闭测试(若有效,需配置 SELinux 白名单):

bash

# 临时关闭SELinux(重启失效)
setenforce 0
# 永久关闭(需重启,生产环境需评估安全性)
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

[image]

  1. SSH 依赖包完整性
    确保 arm64 架构的 SSH 相关包未缺失(银河麒麟可能存在默认包不全的情况):

bash

# 安装或修复SSH及PAM依赖包
yum install -y openssh-server openssh-clients pam pam-devel
2 个赞

学习一下

1 个赞

学习了

特别感谢您,虽然不知道是什么原理,之前用我本地的Windows连一直连不上10.123,刚刚用了您的方法先连10.20中控机,再用中控机ssh root@192.168.10.123 远程连,试了两次就连通了,后边用我的本地Windows连也能连上了,希望后边和我有一样问题的同志们可以看到这个