远程管理的使用,与活动目录AD的使用、组策略的使用一样重要。是衡量2000/03网络管理员、系统管理员水平的重要指标。在远程管理的实践中,网管员经常被各种小问题所困扰,严重阻碍了管理员使用远程管理来高效管理网络。
本文将重点以Windows Server 2003为例,来讨论远程管理中经常出现的各种问题及其解决办法,其中也会有些地方涉及到XP、2000等。但所有讨论只针对微软的Windows技术,将不会涉及到非微软的远程管理工具软件。
文中讨论的问题相对零散,但又彼此有一定的关联。网管朋友如果能够动手实践一下,并做到举一反三,相信对提高您的网管水平会大有帮助的(包括对协议、端口、服务的理解,硬件配置文件、注册表的作用、MMC控制台、终端服务与远程桌面、Windows的命令行工具、组策略……)。建议收藏此文,需要时查询。
对03/XP进行远程管理,如果不考虑工具软件,当然首推“远程桌面”。远程桌面功能强大,可以远程为目标计算机安装软件,远程运行目标计算机上的应用程序,远程关机……,使你如同坐在目标计算机面前操作一样。 03和XP的远程桌面相当于2000S终端服务的远程管理模式(另一种模式被称为:应用程序服务器模式)。 2000S需要安装终端服务后,才能被远程管理。
03/XP只需要在:我的电脑/右键/属性/“远程”标签下,选中远程桌面的“允许用户远程连接到这台计算机”即可。 若需要在03上,经常对多台计算机(03/XP,安装了终端服务的2000S)进行“远程桌面”管理。可以: 1、 开始/运行:MMC
2、 “文件”菜单/添加删除管理单元/添加/远程桌面
3、 控制台根节点/远程桌面/右键/添加新连接,输入:目标IP、名称、用户名、口令、域。
4、 重复步骤3,将目标计算机逐个添加到控制台
5、 退出时保存此控制台,以方便下次使用。
问题1:我们在实际工作中常常遇到这样的情况:当我们想要对目标03/XP计算机进行远程管理时,才发现未在目标计算机上启用“远程桌面”,当然可以跑过去启用上,这样很麻烦。如果是托管的服务器,或者离得很远,那就更麻烦了。
解决:利用远程注册表功能。具体操作如下:
1、将本地机的管理员口令改为与目标计算机的管理员口令相同,使目标机的Windows系统把你当做它本地的管理员。
【说明】上面的方法是:解决对远程目标计算机管理的操作权限问题,最有效、最通用的办法。其它的办法下面也会介绍,如二次登录(RunAs);或在要求身份验证时输入用户名、口令。但其它方法都不那么通用,或经常容易出现问题。
2、重新登录进来后,开始/运行:regedit,进入到注册表编辑器,选择“文件”菜单下的“连接网络注册表”,输入目标计算机IP。
3、找到目标机注册表下的:机器\系统\当前控制设置\控制\终端服务(即:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server),将fDenyTSConnections的值由1改为0即可,这相当于选中“允许用户远程连接到这台计算机”选项。
问题2:远程注册表功能,还常用于解决这样的故障:计算机启动后,输入用户名、口令,点确定登录后,停止于某一自动运行的应用程序上,根本见不到桌面。比如:Ghost7.5的样机被拉镜像后,未运行ngctdos (或ngctw32) ?hide命令就直接重启了。又比如:卸载那种登录时自动运行的应用程序时,中间出错或中断。
这些故障都会在注册表的Run项下留下垃圾,严重时就会导致上述错误:根本看不到桌面,进安全模式也是一样,这样也就无法在本地修改注册表了。
解决:当然知道了问题的原因,解决办法就很简单了。
1、远程注册表进来后,将光标置于“机器”子树上,点“编辑”菜单下的查找,查找项:Run(取消值和数据前的对勾,选中“全字匹配”,这样搜索得快些)。一般问题就出在Run项(即:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run)下的某个值和数据上,手动删除即可。目前还未见到问题出在RunOnce、RunOnceEx项下的情况。
2、如果未找到出错的值,也可将光标置于“当前用户”子树上,重复上面的步骤。
【说明】直接搜索出错信息中的相关内容,也是个好办法,只是有时未必能搜索得到。
问题3:我们想远程管理计算机,但目标是:未启用“远程桌面的”XP/03、2000S未安装终端服务或2000P。这时我们也可以利用“计算机管理”的远程功能(功能要弱于远程桌面,因为Windows管理工具的远程管理功能都要依赖于所提供的插件)。具体操作如下:
0、操作权限解决同上(常见故障:win32拒绝访问,这是权限问题,或未通过验证)
1、我的电脑/右键/管理,进到“计算机管理”
2、计算机管理(本地)/右键/连接到另一台计算机,输入目标计算机IP。
3、如同管理本地计算机一样:远程创建用户、修改口令,管理设备、磁盘,管理服务等等。
下面仅举两例来说明问题:
实用案例1:远程关闭/重启计算机,操作如下(接上面的步骤):
1、 计算机管理(目标机IP)/右键/属性/
2、 “高级”标签/设置,“启动和故障恢复”框/关机
3、 选择,操作:关机或重新启动;强制应用程序关闭:总是(可能丢失数据)
4、 点确定后,远程目标计算机将关机或重启。
此种方法远程关机的优点在于:不需要在目标机上安装终端服务,系统为2000/XP/03均可以,只要有权限就可以做到。而且是图形界面操作简单,不需要记命令。
实用案例2:目标计算机由于“冲击波”病毒等原因,导致RPC服务被禁用了,重启机后RPC服务处于停止状态。症状:无法打开各种对话框;网上邻居/右键/属性,看不到“本地连接”;粘贴不可用,无法复制文件;任务栏找不到最小化的应用程序…………。结果导致:由于在本地无法打开RPC服务的属性对话框,也就没办法来重设RPC服务的启动类型了。
1、 若目标为2000计算机,可以这样来解决:利用远程“计算机管理”,设置目标机上的RPC服务启动类型:自动,然后重启目标计算机。
【说明】顺便对想做这个实验的读者,说明一下如何停止RPC服务:
(1) 在2000上可以将RPC、Plug and Play等服务的启动类型由“自动”改为“禁止”(但不能手动停止,需要设“禁止”后重启机)。
(2) 但在03/XP上无法做到上述这点,启动类型下拉菜单为灰色不可选。要禁止,可以用2000计算机,通过远程“计算机管理”连接过来后,进行修改。也就是说,下拉菜单是否可选,取决于本地操作系统,而非目标操作系统。也可以利用sc config 命令将RPC服务启动类型设为“禁止”,后面详细介绍。
(3) 实验中要慎重,如果将RPC服务禁用停止后,又没有办法再把它启动起来,你将不得不重做系统。
(4) 我的两名助手在按着我的初稿,做这个实验时,不约而同地犯了同样的错误。因此我觉得:实在有必要把下面的问题及其解决办法说明一下。
问题:在试着禁用RPC服务时,他们都在RPC服务/右键/属性/“登录”标签下,在硬件配置文件Profile 1中将RPC服务禁用了。其结果导致后来即使把RPC服务的启动类型设为自动,但由于硬件配置文件的禁止,也无法启动RPC服务了。出错提示为:“在本地计算机上无法启动RPC服务。错误1058:无法启动服务,原因可能是已被禁用或与其相关联的设备没有启动。”
解决:由于此时无法找开对话框,就只能利用注册表了。
A、 开始/运行:regedit,找到下面的项:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Hardware Profiles\Current\System\CurrentControlSet\Enum\ROOT\LEGACY_RPCSS
B、 将此项下的CSConfigFlags的数据由1改为0(相当于启用)。
说明:也可以干脆删除ROOT下的LEGACY_RPCSS项。
C、重启计算机。
2、若目标为03/XP计算机,当RPC服务停止时,使用远程“计算机管理”,无法连接到目标计算机。可以在故障机上本地运行:sc config rpcss start= auto,或远程运行:sc \\目标IP config rpcss start= auto来解决(后面详细介绍)。设成自动后,在“计算机管理”的图形界面下,虽然可以直接点工具栏上的“启动服务”按钮,手动将RPC服务启动起来(或本地开始/运行:net start rpcss),但最好还是重启一次机。
【说明】感兴趣的读者,可以自己试一下:虽然此时RPC服务已经启动,但你用远程“计算机管理”仍然连不来,任务栏上也看不到运行的应用程序,需要重启03/XP以后才行。因为有众多的服务依赖于RPC服务,这些服务此时并没有启动起来。
【附加说明】解决RPC服务禁用、停止还可以利用如下的办法。
(1)编辑本地注册表(若目标为2000,远程编辑注册表也可以):HLM\SYSTEM\CurrentControlSet\Services\RpcSs下,设start=2 (即自动)
(2)利用恢复控制台的Enable命令:Enable RpcSs service_auto_start
(3)如果计算机是域成员,可利用组策略来覆盖其本地设置。具体:域或OU的组策略/计算机配置/Windows设置/安全设置/系统服务(注:本地策略无此项)/RPC,选择服务启动模式
(4)附表:服务启动类型在注册表、恢复控制台的Enable命令、Sc config命令中的值。
启动类型 注册表 Enable Sc config
启动 0 Boot 空格Boot
系统 1 System 空格System
自动 2 Auto 空格Auto
手动 3 Demand 空格Demand
禁用 4 使用Disabled命令 空格Disabled