排查 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) 的公用名。
有可能:
- 目标证书由管理服务器不信任的另一个证书颁发机构签名。
- 目标具有无效的证书,例如,其公用名称 (CN) 与用于连接的 FQDN) (完全限定的域名不匹配。 用于连接的 FQDN 为:lx1.contoso.com。
- 资源池中的服务器尚未配置为信任池中其他服务器签名的证书。
一个常见原因是,代理证书的公用名称 (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 服务器上的 hosts 文件。
- 如果 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
文件夹中。 hosts 文件中的条目是 IP 地址和 FQDN 的组合。例如,若要为 IP 地址为 192.168.1.1 的主机添加名为 newhostname.newdomain.name 的条目,请将以下内容添加到 hosts 文件的末尾:
192.168.1.1 newhostname.newdomain.name
此错误的另一个常见原因是证书已由不受信任的颁发机构签名,例如,多个管理服务器是用于发现的资源池的成员,但尚未在管理服务器之间配置证书信任。
若要验证这一点,请确认用于发现的资源池中的所有管理服务器都信任其他服务器的证书。
有关如何管理 UNIX 和 Linux 计算机的资源池的详细信息,请参阅 管理 UNIX 和 Linux 计算机的资源池。
用户名或密码不正确
尝试发现 UNIX/Linux 代理时,可能会看到错误。 在发现 UNIX/Linux 计算机时,证书验证步骤可能会失败。
可能的原因
- 当 UNIX/Linux 代理未加入域并且无法使用 Kerberos 身份验证时,基本身份验证在 UNIX/Linux 资源池中的一个或多个管理服务器上设置为
false
。 可以通过运行以下命令来验证当前的 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 地址到名称映射。
错误说明
无法将名称 server.contoso.com 解析为 IP 地址
原因
如果为发现输入了主机的 FQDN,但名称无法解析为 DNS (正向查找) 中的 IP 地址,则会发生此错误。
解决方案
若要解决此问题,请更正名称解析 (DNS) 正向查找配置,确保主机存在主机名到 IP 地址的映射。
DNS 配置:转发 DNS 解析与反向 DNS 解析不匹配
错误说明
在这种情况下,通常会收到类似于以下内容的错误:
提供的主机名 ServerName 解析为 IP 地址 10.137.216.x。 反向查找 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
值不能为 null。
参数名称: s
at System.Activities.WorkflowApplication.Invoke (Activity 活动、IDictionary'2 输入、WorkflowInstanceExtensionManager 扩展、TimeSpan timeout)
at System.Activities.WorkflowInvoker.Invoke (Activity 工作流、IDictionary'2 输入、TimeSpan timeout、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
错误说明
发现未成功
消息:未指定的失败
详细信息:意外的 DiscoveryResult.ErrorData 类型。 请提交 bug 报告。
ErrorData:System.ArgumentNullException
值不能为 null。
参数名称:lhs
at System.Activities.WorkflowApplication.Invoke (Activity 活动、IDictionary'2 输入、WorkflowInstanceExtensionManager 扩展、TimeSpan timeout)
at System.Activities.WorkflowInvoker.Invoke (Activity 工作流、IDictionary'2 输入、TimeSpan timeout、WorkflowInstanceExtensionManager 扩展)
at Microsoft.SystemCenter.CrossPlatform.ClientActions.DefaultDiscovery.InvokeWorkflow (IManagedObject managementActionPoint、DiscoveryTargetEndpoint criteria、IInstallableAgents installableAgents)
原因
出现此错误的原因是已安装的 kits 文件夹中的 omsagent shell 文件。
解决方案
导航到 文件资源管理器 中的以下目录:
C:\Program Files\Microsoft System Center\Operations Manager\Server\AgentManagement\UnixAgents\DownloadedKits
如果列出了 omsagent 文件,请将它们移动到 System Center Operations Manager 外部的临时目录, (SCOM) 文件。
有关示例,请参阅以下屏幕截图:
从 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'
密码:
退出
su:密码不正确
opsuser@lx1:~> exit
注销
可能的原因
在用户凭据输入中选择了 Su 提升,但为 su 提升提供了无效的根密码。
解决方案
在“提升配置”对话框中验证根的密码输入。
SSH 发现期间失败。 退出代码:-2147221248
错误说明
SSH 发现期间失败。 退出代码:-2147221248
标准输出:
标准错误:无法访问主目录 /home/username:无此类文件或目录原因
为发现指定的用户帐户没有主目录。
解决方案
验证用户是否具有位于 /home/ 的主目录,以及用户是否能够写入此目录。
错误说明
SSH 发现期间失败。 退出代码:-2147221248
标准输出:
标准错误:root 的密码:
异常消息:操作超时原因
在用户凭据输入中选择了 Sudo 提升。 但是,为发现指定的用户帐户未正确配置为使用无密码 sudo 提升,或者未为发现中使用的用户帐户授予所需的 sudo 提升权限。
解决方案
查看 sudo 提升配置文档并验证 sudo 的用户配置。 请注意,必须配置无密码 sudo。
WSMan 连接错误
代理已响应请求,但 WSMan 连接失败,原因是:访问被拒绝
可能的原因
- 已安装代理,并且代理证书已签名。 但是,为代理验证提供的用户凭据无效。
- 为发现指定的用户帐户配置为使用 SSH 密钥进行身份验证,但为代理验证提供的用户凭据无效。
- UNIX 端存在权限问题或不正确的 PAM 配置。
解决方案
要解决此问题,请遵循以下步骤:
验证是否正确输入了用于代理验证的用户名和密码,以及该用户是否是目标主机上的有效用户。
如果问题仍然存在,请验证是否已正确配置 sudo 提升。
此外,检查 UNIX/Linux 计算机上记录消息。 例如,在 AIX 中,可以在 下
/var/adm/messages
找到日志。 在其他操作系统中,位置可能会有所不同。查找如下所示的行:
9 月 3 日 14:49:07 服务器身份验证|security:debug /opt/microsoft/scx/bin/omiserver PAM: pam_authenticate: 错误身份验证失败。
如果在消息日志中看到类似的行,则表示 PAM 配置文件缺少有关 OMIServer 的信息。 PAM 配置文件可以在 目录或
/etc/pam.conf
文件中找到/etc/pam.d/
。将有关 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 版本,则可能会出现这种情况。
解决方案
导入 UNIX/Linux 操作系统管理包的 System Center 2012 版本。
已安装代理,并且计算机已被 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 支持部门。