排除 Operations Manager 中的 UNIX/Linux 代理发现问题

本文可帮助你排查 UNIX 或 Linux 计算机发现过程中可能会遇到的常见错误。

原始产品版本: System Center Operations Manager
原始 KB 数: 4490426

若要监视 System Center Operations Manager(OpsMgr)中的 UNIX 或 Linux 计算机,必须先发现计算机,并且必须安装 OpsMgr 代理。 计算机和设备管理向导用于在 UNIX 和 Linux 计算机上发现和安装代理。 但是,由于配置问题、凭据或特权问题或者网络和名称解析问题,发现过程可能会失败。

证书错误或证书签名错误

签名证书验证操作未成功

证书验证失败时,通常会收到如下所示的错误:

代理验证失败。 错误详细信息:目标计算机上的服务器证书(lx1.contoso.com:1270)具有以下错误:
无法检查 SSL 证书是否吊销。 用于检查吊销的服务器可能无法访问。
SSL 证书包含与主机名不匹配的公用名(CN)。
有可能:

  1. 目标证书由另一个不受管理服务器信任的证书颁发机构签名。
  2. 目标使用了一个无效证书,例如,该证书的公用名 (CN) 与用于连接的完全限定域名 (FQDN) 不匹配。 用于连接的 FQDN 为:lx1.contoso.com。
  3. 资源池中的服务器尚未配置为信任该池中其他服务器签名的证书。
  • 一个常见原因是代理证书的公用名(CN)值与提供的或解析的完全限定域名(FQDN)不匹配。

    若要验证这一点,请确认代理主机的主机名和域名是否与通过 DNS 解析的 FQDN 匹配。

    可以通过运行以下命令在 UNIX 或 Linux 计算机上查看证书的基本详细信息:

    openssl x509 -noout -in /etc/opt/microsoft/scx/ssl/scx.pem -subject -issuer -dates
    

    执行此操作时,将看到类似于以下内容的输出:

    subject= /DC=name/DC=newdomain/CN=newhostname/CN=newhostname.newdomain.name
    issuer= /DC=name/DC=newdomain/CN=newhostname/CN=newhostname.newdomain.name
    notBefore=Mar 25 05:21:18 2008 GMT
    notAfter=Mar 20 05:21:18 2029 GMT

    使用此信息验证主机名和日期,确保它们与 Operations Manager 管理服务器解析的名称匹配。

    如果主机名不匹配,请使用下列操作之一来解决此问题:

    • 如果 UNIX 或 Linux 主机名正确,但 Operations Manager 管理服务器正在错误解析它,请修改 DNS 条目以匹配正确的 FQDN,或向 Operations Manager 服务器上的主机文件添加条目。
    • 如果 UNIX 或 Linux 主机名不正确,请执行以下操作之一:
      • 将 UNIX 或 Linux 主机上的主机名更改为正确的主机名并创建新证书。
      • 创建具有所需主机名的新证书。

    若要更改证书上的名称,请执行以下操作:

    如果使用不正确的名称创建了证书,则可以更改主机名并重新创建证书和私钥。 为此,请在 UNIX 或 Linux 计算机上运行以下命令:

    /opt/microsoft/scx/bin/tools/scxsslconfig -f -v
    

    此选项 -f 强制覆盖 /etc/opt/microsoft/scx/ssl 中的文件。

    还可以使用 -h-d 开关更改证书上的主机名和域名,如以下示例所示:

    /opt/microsoft/scx/bin/tools/scxsslconfig -f -h <hostname> -d <domain.name>
    

    运行以下命令重启代理:

    /opt/microsoft/scx/bin/tools/scxadmin -restart
    

    若要向 hosts 文件添加条目,请执行以下操作:

    如果 FQDN 不在反向 DNS 中,则可以将条目添加到位于管理服务器上的主机文件,以提供名称解析。 hosts 文件位于 \Windows\System32\Drivers\etc 文件夹中。 主机文件中的条目是 IP 地址和 FQDN 的组合。

    例如,若要为具有 IP 地址为 192.168.1.1 的主机添加名为 newhostname.newdomain.name 的条目,请将以下内容添加到主机文件的末尾:

    192.168.1.1 newhostname.newdomain.name

  • 此错误的另一个常见原因是证书已由不受信任的颁发机构签名,例如,当多个管理服务器是用于发现的资源池的成员时,但管理服务器之间尚未配置证书信任。

    若要验证这一点,请确认用于发现的资源池中的所有管理服务器都信任对方服务器的证书。

    有关如何管理 UNIX 和 Linux 计算机的资源池的详细信息,请参阅 管理 UNIX 和 Linux 计算机的资源池。

用户名或密码不正确

尝试发现 UNIX/Linux 代理时,可能会看到此错误。 发现 UNIX/Linux 计算机时,证书验证步骤可能会失败。

可能的原因

  • 当 UNIX/Linux 代理未加入域且无法使用 Kerberos 身份验证时,基本身份验证将设置为 false 在 UNIX/Linux 资源池中的一个或多个管理服务器上。 可以通过运行以下命令来验证当前的 WinRM 设置: winrm get winrm/config/client
  • 用户名或密码不正确。

分辨率

可以在 UNIX/Linux 资源池中的管理服务器上更新 WinRM 配置,以允许基本身份验证,方法是运行以下命令,也可以通过组策略设置配置:

winrm set winrm/config/client/auth @{Basic="true"}

注意

上述命令在以下注册表项中设置 DWORD(32 位)注册表值(AllowBasic):

HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\WinRM\Client

AllowBasic 允许 1 (Enabled) 或 0 (Disabled) 十进制值。

证书签名操作不成功

可能的原因

  • 为发现指定的用户帐户没有足够的权限来执行签名所涉及的文件操作。
  • 未正确配置为发现指定的用户帐户的 Sudo 提升权限。

分辨率

若要解决此问题,请通过在错误详细信息中检查 StdErr 输出来验证用户帐户,以确定失败原因。 此外,请验证用于证书签名的帐户的 sudo 特权配置。

网络名称解析错误

目标地址不可解析

这些问题通常属于以下类别之一:

  • 错误说明

    未能将 IP 地址 <IP 地址> 解析为名称

    原因

    当为发现输入主机的 IP 地址,但 IP 地址无法解析为 DNS 中的名称(反向查找)时,会发生此错误。

    分辨率

    若要解决此问题,请更正反向查找区域的名称解析(DNS)配置,确保受影响的主机存在名称映射的 IP 地址。

  • 错误说明

    无法将名称解析为 IP 地址 server.contoso.com

    原因

    如果为主机输入 FQDN 进行发现,但名称无法解析为 DNS 中的 IP 地址(向前查找),则会发生此错误。

    分辨率

    若要解决此问题,请更正名称解析(DNS)配置,以便向前查找,确保主机存在主机名到 IP 地址映射。

DNS 配置:正向 DNS 解析与反向 DNS 解析不匹配

错误说明

在这种情况下,你通常会收到如下所示的错误:

提供的主机名 ServerName 解析为 10.137.216.x 的 IP 地址。 通过反向查找 IP 地址 192.168.x.x 返回的主机名 ServerName.contoso.com 与提供的主机名不匹配。 请验证 DNS 配置并再次尝试请求。

原因

最常见的原因是转发和反向 DNS 查找区域中主机的记录不匹配。

分辨率

若要解决此问题,请更正 DNS 中正向和反向查找区域中的记录,使主机名和 IP 地址匹配。

目标地址无法访问

错误说明

在这种情况下,你通常会收到如下所示的错误:

WinRM 客户端无法在指定的时间内完成操作。 检查计算机名是否有效,是否可通过网络访问,以及是否已启用 Windows 远程管理服务的防火墙例外。

可能的原因

  • 由于名称解析、网络中断或主机中断错误,主机无法访问。
  • 基于网络的防火墙或基于主机的防火墙阻止了与目标主机的 TCP 端口 1270 连接。

分辨率

若要解决此问题,请验证管理服务器是否可以使用其 FQDN ping 代理主机。 此外,验证没有网络防火墙或主机防火墙阻止 TCP 端口 1270。

意外的 discoveryResult.ErrorData 类型。 请提交 bug 报告 - 参数名称:

错误说明

意外的 DiscoveryResult.ErrorData 类型。 请提交 Bug 报告。
ErrorData:System.ArgumentNullException
值不能为空。
参数名称:s
at System.Activities.WorkflowApplication.Invoke(Activity activity, IDictionary'2 inputs, WorkflowInstanceExtensionManager extensions, TimeSpan timeout)
at System.Activities.WorkflowInvoker.Invoke(活动工作流、IDictionary'2 输入、TimeSpan 超时、WorkflowInstanceExtensionManager 扩展)
at Microsoft.SystemCenter.CrossPlatform.ClientActions.DefaultDiscovery.InvokeWorkflow(IManagedObject managementActionPoint, DiscoveryTargetEndpoint criteria, IInstallableAgents installableAgents)

原因

发生此错误的原因是已在 UNIX 或 Linux 资源池的管理服务器上配置了 WinHTTP 代理设置,而尝试发现的 UNIX 或 Linux 代理的 FQDN 未包含在 WinHTTP 代理绕过列表中。

分辨率

若要解决此问题,请将 UNIX 或 Linux FQDN 添加到 WinHTTP 代理旁路列表。

在 UNIX 或 Linux 资源池中的管理服务器上,在提升的命令提示符处运行以下命令以验证当前代理配置:

netsh winhttp show proxy

如果配置了 WinHTTP 代理服务器,请运行以下命令,将尝试发现的服务器 FQDN 添加到旁路列表:

netsh winhttp set proxy proxy-server="<proxyserver:port>" bypass-list="*.ourdomain.com;*.yourdomain.com*;<serverFQDN>"

配置绕过列表后,请检查代理发现是否成功。

注意

可以运行 netsh winhttp reset proxy 命令来禁用 WinHTTP 代理。 此命令将删除代理服务器并配置直接访问。

意外的 discoveryResult.ErrorData 类型。 请提交 bug 报告 - 参数名称:lhs

错误说明

发现未成功
消息:未指定失败
详细信息:Unexpected DiscoveryResult.ErrorData 类型。 请提交 Bug 报告。
ErrorData:System.ArgumentNullException
值不能为空。
参数名称:lhs
at System.Activities.WorkflowApplication.Invoke(Activity activity, IDictionary'2 inputs, WorkflowInstanceExtensionManager extensions, TimeSpan timeout)
at System.Activities.WorkflowInvoker.Invoke(活动工作流、IDictionary'2 输入、TimeSpan 超时、WorkflowInstanceExtensionManager 扩展)
at Microsoft.SystemCenter.CrossPlatform.ClientActions.DefaultDiscovery.InvokeWorkflow(IManagedObject managementActionPoint, DiscoveryTargetEndpoint criteria, IInstallableAgents installableAgents)

原因

此错误是由于已安装工具包文件夹中的 omsagent shell 文件而发生的。

分辨率

导航到文件资源管理器中的以下目录:

C:\Program Files\Microsoft System Center\Operations Manager\Server\AgentManagement\UnixAgents\DownloadedKits

如果列出了 omsagent 文件,请将这些文件移动到 System Center Operations Manager (SCOM) 文件外部的临时目录。

有关示例,请参阅以下屏幕截图:

显示 DownloadedKits 文件夹中 omsagent 文件的屏幕截图。

DownloadedKits 文件夹移动后,请重试发现。 发现现在应该成功。

注意

发现可能会失败并出现其他错误。 此错误指示需要更多故障排除,例如 sudoers、连接等。

SSH 连接错误

在 SSH 发现过程中失败。 退出代码:-1073479162

错误说明

标准输出:
标准误差:
异常消息:异常(-1073479162)导致 SSH 命令失败 - 由于目标计算机主动拒绝连接,无法建立连接。

可能的原因

  • SSH 守护程序未在目标系统上运行。
  • 网络或基于主机的防火墙阻止 TCP 端口 22 上的 SSH 连接。

决议

  • 验证 SSH 守护程序是否正在运行。
  • 验证没有网络防火墙或主机防火墙阻止 TCP 端口 22。

在 SSH 发现过程中失败。 退出代码:-1073479118

错误说明

在 SSH 发现过程中失败。 退出代码:-1073479118
标准输出:
标准误差:
异常消息:异常(-1073479118)导致 SSH 命令失败 - 服务器发送断开连接消息:类型 2(协议错误:根身份验证失败过多)

可能的原因

  • 不允许为发现指定的用户帐户通过 SSH 登录。
  • 在指定用于发现的用户帐户时输入了无效的用户名或密码

决议

  • 验证是否允许用户通过 SSH 登录。
  • 验证输入凭据,以及用户是否在目标主机上定义。

在 SSH 发现过程中失败。 退出代码:1

错误说明

在 SSH 发现过程中失败。 退出代码:1
标准输出:Sudo 路径:/usr/bin/
标准错误:sudo:很抱歉,必须有一个 tty 才能运行 sudo
异常消息:

原因

在用户凭据输入中选择了 Sudo 提升,但是requiretty对于 sudoers 中的用户未禁用该选项。

分辨率

使用visudo命令编辑目标主机上的 sudoers 文件,并添加以下行:

默认值: <username>!requiretty

有关详细信息,请参阅 如何配置 sudo 提升和 SSH 密钥

SU 密码无效

错误说明

.[?1034hopsuser@lx1:~> su - root -c 'sh /tmp/scx-opsuser/GetOSVersion.sh;EC=$?;rm -rf /tmp/scx-opsuser;exit $EC'
密码:
exit
su:密码不正确
opsuser@lx1:~> 退出
logout

可能的原因

在用户凭据输入中选择了 Su 提升,但为 su 提升提供了无效的根密码。

分辨率

在“提升配置”对话框中验证根目录的密码输入。

在 SSH 发现过程中失败。 退出代码:-2147221248

  • 错误说明

    在 SSH 发现过程中失败。 退出代码:-2147221248
    标准输出:
    标准错误:无法对主目录 /home/username 进行 chdir:没有此类文件或目录

    原因

    为发现指定的用户帐户没有主目录。

    分辨率

    验证用户是否具有主目录:/home/,并且该用户是否能够写入此目录。

  • 错误说明

    在 SSH 发现过程中失败。 退出代码:-2147221248
    标准输出:
    标准错误:root 的密码:
    异常消息:操作超时

    原因

    在用户凭据输入中选择了 Sudo 提升。 但是,为发现指定的用户帐户未正确配置为使用无密码 sudo 提升,或者未为发现中使用的用户帐户授予所需的 sudo 提升权限。

    分辨率

    查看 sudo 提升配置文档并验证 sudo 的用户配置。 请注意,必须配置无密码 sudo。

WSMan 连接错误

代理响应了请求,但 WSMan 连接由于:访问被拒绝

可能的原因

  • 代理已安装且代理证书已签名。 但是,为代理验证提供的用户凭据无效。
  • 为发现指定的用户帐户配置为使用 SSH 密钥进行身份验证,但为代理验证提供的用户凭据无效。
  • UNIX 端存在权限问题或 PAM 配置不正确。

分辨率

要解决该问题,请执行以下步骤:

  1. 验证代理验证的用户名和密码是否正确输入,并且用户是否是目标主机上的有效用户。

  2. 如果问题仍然存在,请验证 sudo 提升是否已正确配置。

  3. 另请检查 UNIX/Linux 计算机上的消息日志。 例如,在 AIX 中,可以在以下位置 /var/adm/messages找到日志。 在其他操作系统中,位置可能会有所不同。

    查找如下行:

    9 月 3 日 14:49:07 服务器身份验证|security:debug /opt/microsoft/scx/bin/omiserver PAM:pam_authenticate:身份验证失败。

    如果在消息日志中看到类似的行,则表示 PAM 配置文件缺少有关 OMIServer 的信息。 可以在目录或/etc/pam.conf文件中找到 /etc/pam.d/ PAM 配置文件。

    将有关 OMIServer 的信息添加回 PAM 配置文件的最简单方法是从头开始在该计算机上重新安装 SCX 代理。 如果这不容易,可以将与 OMI 相关的行从工作计算机复制到非工作计算机。

WSMan 仅发现 192.168.x.x 失败

可能的原因

  • 发现类型” 选项设置为 “仅具有已安装代理和签名证书 的计算机”,目标主机已安装代理。 但是,目标主机证书尚未签名。 若要使用仅限 WSMan 的发现选项,必须安装代理,并且证书必须手动签名。
  • 发现类型” 选项设置为 “仅具有已安装代理和已签名证书的计算机”,但目标主机当前未安装 UNIX/Linux 代理。
  • 发现类型” 选项设置为 “仅具有已安装代理和已签名证书的计算机”,但 UNIX/Linux 代理当前未运行。
  • 发现类型” 选项设置为 “仅具有已安装代理和已签名证书的计算机”,但目标主机无法访问,网络或基于主机的防火墙正在阻止连接或 UNIX/Linux 代理当前关闭。

决议

  • 手动对证书进行签名。
  • 验证是否已安装 UNIX/Linux 代理。
  • 将选项更改为“发现所有计算机,以允许发现向导执行证书签名。
  • 验证 UNIX/Linux 代理是否正在运行,并且目标主机是否可访问。
  • 验证没有网络防火墙或主机防火墙阻止在 TCP 端口 1270 上访问。

其他错误

无法针对对象执行该任务,因为该任务的目标与对象的任何类都不匹配

原因

在 System Center 2012 Operations Manager 管理组中,如果导入的 UNIX/Linux 管理包是 Operations Manager 2007 R2 版本,则可能会出现这种情况。

分辨率

导入 System Center 2012 版本的 UNIX/Linux 操作系统管理包。

已安装代理,并且计算机已被 Operations Manager 监视

原因

此管理组中已发现目标主机。

分辨率

无需执行任何操作。 可以从操作控制台的管理窗格中的 UNIX/Linux 服务器视图执行代理升级或迁移到备用资源池。

未能在导入的管理包中找到匹配支持的代理实例

错误说明

在导入的管理包中未能找到匹配的受支持代理实例。 导入此平台的管理包,以便发现此计算机。

可能的原因

  • 目标主机正在运行不受支持的操作系统。
  • 尚未导入目标主机操作系统的正确管理包。
  • 最近导入了操作系统的正确管理包,但尚未完全加载。

决议

  • 确认目标主机正在运行受支持的操作系统。
  • 导入目标主机操作系统和版本的管理包。
  • 如果导入了管理包,它可能仍在加载。 等待几分钟并重新运行发现。

无法枚举可安装的代理类型。 关联的资源池可能仍在初始化

错误说明

无法枚举可安装的代理类型。 关联的资源池可能仍在初始化。 如果你已选择新创建的资源池,请等待几分钟后再使用它。

可能的原因

  • 例如,在发现中使用的资源池不正常,大多数成员服务器处于脱机状态。
  • 最近创建了发现中使用的资源池,但尚未完全初始化。

分辨率

如果最近创建了发现中使用的资源池,请在几分钟后重试发现,以允许池初始化。 否则,请检查服务器中的 Operations Manager 事件日志,这些服务器是用于发现问题源的资源池的成员。

无法将新代理复制到此计算机

错误说明

消息:无法将新代理复制到此计算机
详细信息:
无法复制工具包。 退出代码:-1073479144
标准输出:
标准误差:
异常消息:异常(-1073479144)导致 SSH 命令失败

原因

数据库和代理存储库之间的文件代理版本不匹配。

决议

  • 验证失败的代理是否都因版本不匹配而失败。 否则,请应用其他故障排除步骤。
  • 尝试再次更新失败的代理。 通常,在每次更新迭代期间,失败的代理列表会越来越短。
  • 在 Linux 资源池或其他池的所有成员上重启运行状况服务,以管理 Unix 或 Linux 计算机。 %ProgramFiles%\Microsoft System Center 2012 R2\Operations Manager\Server\AgentManagement\UnixAgents\DownloadedKits检查文件夹是否正确。 请记住关闭并重新打开发现向导。

详细信息

有关更多帮助,请参阅 TechNet 支持论坛或联系Microsoft 支持部门