适用于 SUSE Linux Enterprise High Availability Extension 12 SP5

D 在没有 root 访问权的情况下运行群集报告

所有群集节点都必须能通过 SSH 相互访问。crm report(用于查错)等工具和 Hawk2 的历史记录浏览器要求节点之间采用无口令 SSH 访问方式,否则它们只能从当前节点收集数据。

如果无口令 SSH root 访问不符合法规要求,可以使用一种变通方法来运行群集报告。该变通方法主要包括以下几个步骤:

  1. 创建专用的本地用户帐户(用于运行 crm report)。

  2. 为该用户帐户配置无口令 SSH 访问(最好是使用非标准 SSH 端口)。

  3. 为该用户配置 sudo

  4. 以该用户的身份运行 crm report

默认情况下,crm report 在运行时会先以 root 身份尝试登录远程节点,如果无法登录,则以 hacluster 用户身份登录。但是,如果您的本地安全策略阻止使用 SSH 进行 root 登录,则对所有远程节点执行脚本将会失败。即使尝试以 hacluster 用户身份运行脚本也会失败,因为这是一个服务帐户,其外壳设置为 /bin/false,因此会阻止登录。创建专用的本地用户是对高可用性群集中的所有节点成功运行 crm report 脚本的唯一可行做法。

D.1 创建本地用户帐户

在下面的示例中,我们将通过命令行创建名为 hareport 的本地用户。口令可以是符合安全要求的任何值。或者,您也可以使用 YaST 创建用户帐户并设置口令。

过程 D.1︰ 创建用于运行群集报告的专用用户帐户
  1. 启动外壳,然后创建主目录为 /home/hareport 的用户 hareport

    root # useradd -m -d /home/hareport -c "HA Report" hareport
  2. 为该用户设置口令:

    root # passwd hareport
  3. 根据提示输入该用户的口令两次。

重要
重要:需要在每个群集节点上使用同一个用户

要在所有节点上创建相同的用户帐户,请在每个群集节点上重复上述步骤。

D.2 配置无口令 SSH 帐户

过程 D.2︰ 为非标准端口配置 SSH 守护程序

默认情况下,SSH 守护程序与 SSH 客户端将在端口 22 上通讯和侦听。如果您的网络安全方针要求将默认 SSH 端口更改为编号较高的备用端口,您需要修改守护程序的配置文件 /etc/ssh/sshd_config

  1. 要修改默认端口,请在该文件中搜索 Port 一行,取消注释该行,然后根据需要进行编辑。例如,可将该行设置为:

    Port 5022
  2. 如果您的组织不允许 root 用户访问其他服务器,请在该文件中搜索 PermitRootLogin 项,取消注释该项,然后将它设置为 no

    PermitRootLogin no
  3. 或者,通过执行以下命令,在该文件的末尾添加相应的行:

    root # echo “PermitRootLogin no” >> /etc/ssh/sshd_config
    root # echo “Port 5022” >> /etc/ssh/sshd_config
  4. 修改 /etc/ssh/sshd_config 后,重启动 SSH 守护程序以使新设置生效:

    root # systemctl restart sshd
重要
重要:需要在每个群集节点上使用相同的设置

在每个群集节点上重复上述 SSH 守护程序配置。

过程 D.3︰ 为非标准端口配置 SSH 客户端

如果要在群集中的所有节点上进行 SSH 端口更改,一种有效的做法是修改 SSH 配置文件 /etc/ssh/sshd_config

  1. 要修改默认端口,请在该文件中搜索 Port 一行,取消注释该行,然后根据需要进行编辑。例如,可将该行设置为:

    Port 5022
  2. 或者,通过执行以下命令,在该文件的末尾添加相应的行:

    root # echo “Port 5022” >> /etc/ssh/ssh_config
注意
注意:只需在一个节点上进行设置

只需在要运行群集报告的节点上进行上述 SSH 客户端配置。

或者,您可以使用 -X 选项并结合自定义 SSH 端口来运行 crm report,甚至可以将 crm report 指定为默认使用自定义 SSH 端口。有关细节,请参见过程 D.5 “使用自定义 SSH 端口生成群集报告”

过程 D.4︰ 配置 SSH 共享密钥

您可以使用 SSH 访问其他服务器,系统不会要求您输入口令。这种访问方法乍看之下似乎并不安全,但其实是非常安全的,因为用户只能访问共享了其公共密钥的服务器。共享密钥必须以使用该密钥的用户身份来创建。

  1. 使用您为了运行群集报告而创建的用户帐户登录某个节点(在上面的示例中,该用户帐户为 hareport)。

  2. 生成新密钥:

    hareport > ssh-keygen –t rsa

    默认情况下,此命令将生成 2048 位密钥。密钥的默认位置为 ~/.ssh/。系统会提示您对该该密钥设置一个通行口令。但请勿输入通行口令,因为要进行无口令登录,就不能对密钥设置通行口令。

  3. 生成密钥后,将公共密钥复制到其他每个节点(包括您在其中创建了该密钥的节点):

    hareport > ssh-copy-id -i ~/.ssh/id_rsa.pub HOSTNAME_OR_IP

    在该命令中,您可以使用每个服务器的 DNS 名称、别名或 IP 地址。在复制过程中,系统会要求您接受每个节点的主机密钥,并且您需要提供 hareport 用户帐户的口令(只需要输入这一次)。

  4. 在所有群集节点上共享密钥后,使用无口令 SSH 来测试您是否能够以 hareport 用户的身份登录其他节点:

    hareport > ssh HOSTNAME_OR_IP

    您应该会自动连接到远程服务器,系统不会要求您接受证书或输入口令。

注意
注意:只需在一个节点上进行设置

如果您打算每次都从同一个节点运行群集报告,则在这个节点上执行上述过程便已足够。否则,您需要在每个节点上重复上述过程。

D.3 配置 sudo

使用 sudo 命令可让普通用户在提供或不提供口令的情况下快速变成 root 并发出命令。可向所有 root 级命令或者特定的命令授予 sudo 访问权限。Sudo 通常使用别名来定义整个命令字符串。

要配置 sudo,请使用 visudo不是 vi)或 YaST。

警告
警告:不要使用 vi

要从命令行配置 sudo,必须以 root 身份使用 visudo 编辑 sudoers 文件。使用任何其他编辑器可能会导致语法或文件权限错误,进而阻止 sudo 运行。

  1. root 身份登录。

  2. 要打开 /etc/sudoers 文件,请输入 visudo

  3. 查找以下类别:Host alias specificationUser alias specificationCmnd alias specificationRunas alias specification

  4. 将以下几项添加到 /etc/sudoers 中的相应类别:

    Host_Alias	CLUSTER = alice,bob,charlie 1
    User_Alias HA = hareport 2
    Cmnd_Alias HA_ALLOWED = /bin/su, /usr/sbin/crm report *3
    Runas_Alias R = root 4

    1

    主机别名定义 sudo 用户有权在哪个服务器(或特定范围内的服务器)上发出命令。在主机别名中,可以使用 DNS 名称或 IP 地址,或者指定整个网络范围(例如 172.17.12.0/24)。要限制访问范围,应该仅指定群集节点的主机名。

    2

    使用用户别名可将多个本地用户帐户添加到单个别名。但是,在这种情况下,您可以避开创建别名步骤,因为系统只会使用一个帐户。在上例中,我们添加了为运行群集报告而创建的 hareport 用户。

    3

    命令别名定义该用户可执行的命令。如果您要限制非 root 用户在使用 sudo 时可以访问的项目,命令别名将十分有用。在这种情况下,hareport 用户帐户需要对 crm reportsu 命令拥有访问权限。

    4

    runas 别名指定命令的运行帐户。在本例中为 root

  5. 搜索以下两行:

    Defaults targetpw
    ALL     ALL=(ALL) ALL

    由于这两行与我们要创建的设置相冲突,因此请将其禁用:

    #Defaults targetpw
    #ALL     ALL=(ALL) ALL
  6. 查找 User privilege specification

  7. 定义上述别名后,现在可以添加以下规则:

    HA	CLUSTER = (R) NOPASSWD:HA_ALLOWED

    NOPASSWORD 选项确保用户 hareport 无需提供口令就能执行群集报告。

重要
重要:需要在每个群集节点上使用相同的 sudo 配置

必须在群集中的所有节点上指定这项 sudo 配置。无需为 sudo 做出其他更改,并且无需重启动任何服务。

D.4 生成群集报告

要使用上面配置的设置运行群集报告,需要以 hareport 用户的身份登录某个节点。要启动群集报告,请使用 crm report 命令。例如:

root # crm report -f 0:00 -n "alice bob charlie"

此命令将在指定的节点上提取从凌晨 0 点开始的所有信息,并在当前目录中创建名为 pcmk-日期.tar.bz2*.tar.bz2 存档。

过程 D.5︰ 使用自定义 SSH 端口生成群集报告
  1. 使用自定义 SSH 端口时,请结合使用 -Xcrm report 来修改客户端的 SSH 端口。例如,如果自定义 SSH 端口为 5022,则使用以下命令:

    root # crm report -X "-p 5022" [...]
  2. 要为 crm report 永久设置自定义 SSH 端口,请启动交互式 crm 外壳:

    crm options
  3. 输入以下内容:

    crm(live)options#  set core.report_tool_options "-X -oPort=5022"
打印此页