我正在尝试使用 C# 远程访问 EC2 机器以获取一些信息。我编写了如下代码:-
ConnectionOptions options = new ConnectionOptions
{
Username = serverspace.ServerIP + @"\xxxxxx",
Password = "xxxxxxx",
Impersonation = ImpersonationLevel.Impersonate,
EnablePrivileges = true
};
ManagementScope scope = new ManagementScope(String.Format(@"\\{0}\ROOT\CIMV2", serverspace.ServerIP), options);
scope.Connect();
但是抛出了 RPC 异常,如下所示:- RPC 服务器不可用。(来自 HRESULT 的异常:0x800706BA)位于 System.Runtime.InteropServices.Marshal.ThrowExceptionForHRInternal(Int32 errorCode,IntPtr errorInfo)位于 System.Management.ManagementScope.InitializeGuts(Object o)位于 System.Management.ManagementScope.Initialize()
1- 问题出在代码上吗? 2- 我需要调整所有机器的防火墙吗?
答案1
RPC 防火墙端口记录在此处:
Windows 的服务概述和网络端口要求
-远程过程调用 (RPC):
http://support.microsoft.com/kb/832017#method39
System service name: RpcSs
Application protocol Protocol Ports
RPC TCP 135
RPC over HTTPS TCP 593
NetBIOS Datagram Service UDP 138
NetBIOS Name Resolution UDP 137
NetBIOS Session Service TCP 139
SMB TCP 445
此外,您还需要“高端口”范围 49152 到 65535。