远程管理的使用,与活动目录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
问题4:利用shutdown命令,关闭远程计算机。我们来逐步深入讨论一下:
1、 shutdown命令在2000下没有,使用时需要安装2000资源工具包(resource kit)。
2、 在03上直接使用,最长关机延迟为600秒(10分钟),若要做成定时关机,一般需要结合“任务计划”。(注意:XP上的shutdown命令,没有最长关机延迟:600秒的限制。)
具体操作如下:
(1)创建一个批处理文件,如shut.bat,其内容为:shutdown /s (不指定时间参数,默认关机延迟提示为30秒,shutdown –a可取消关机操作)。
(2)开始/程序/附件/系统工具/任务计划
(3)添加任务计划/浏览/找到shut.bat,指定执行时间(可利用“显示多项计划”指定不规则的多个时间),输入管理员密码,以保证到时有权限执行这个任务计划中的任务。
3、若要远程关闭目标计算机,命令为:shutdown /m \\目标IP /s /t xxx秒
【说明】操作权限问题,可利用前面讲过的同名、同口令来解决。若不想修改口令,也可以利用RunAs命令,下面就要介绍。
问题5:利用RunAs命令解决远程管理中的权限问题
1、 命令格式:RunAs /netonly /user:域名或计算机名\用户名 命令
【说明】
(1)/netonly参数表示其后指明的用户身份,仅在网络访问时才使用。
(2)最后跟的命令中若带参数,有空格,需要用引号括起来。
如:RunAs /netonly /user:Server1\administrator “shutdown /m \⏺.63.243.1 /s /t 600”
又如:想利用远程“计算机管理”,又不想修改本地管理员口令,可以:
RunAs /netonly /user:Server1\administrator mmc.exe
这个没有空格,不用括起来。命令运行后将弹出MMC控制台,手动添加“计算机管理(目标IP)”。这个阶段相当于是以本地管理员身份来做这些事情,只有真正连过去进行远程“计算机管理”操作时,才是以目标机的管理员身份,这就是/netonly参数的用途。
(3)注意:利用MMC创建目标机的“计算机管理”的.msc工具,再在图形界面下Shift+右键/运行方式,进行二次登录的方式是行不通的。出错提示为:无法打开“目标IP”上的服务控制管理器数据,错误5:拒绝访问。
2、 回车后,将提示输入目标计算机\用户口令,键入口令后,命令将在本地或目标计算机上执行。
问题6:利用Telnet进行远程管理,而默认Telnet服务不启动。
【说明】
1、利用Telnet连接到目标计算机,进行远程管理,其作用相当于在目标计算机的命令提示符下操作>咛迥芙心男┰冻坦芾聿僮鳎览涤谀勘昊舷钟械拿钚泄ぞ摺n2、既然有远程桌面、MMC控制台等这些图形界面的远程管理工具,那么为什么还要使用Telnet这样古老的工具呢?图形界面的远程管理工具,依赖的服务、其它相关资源较多,经常会不可用。而Telnet小巧精悍,往住有其独到之处。
比如:2000计算机被安全策略中“拒绝登录”权利所阻止,此时管理员也无法登录到图形界面,这时我们就可以通过Telnet连过去,利用secedit命令进行安全设置的导入、导出、刷新来解决这个问题。(相关内容可参考我的文章《2000中“拒绝登录”的解决办法》,或网上的相关文章)
问题:Telnet服务的启动类型:03/XP默认为禁用,2000默认为手动。总之,默认情况下它是不会启动的。此时连过去的出错信息为:正在连接到xxx,不能打开到主机的连接,在端口23:连接失败。
解决:
<方法1>利用问题3中的办法,使用远程“计算机管理”,设置启动类型:自动,并直接将Telnet服务启动起来。
<方法2>利用服务控制命令SC配置服务启动类型,并启动服务。
(1)操作权限问题,可利用同名同口令或RunAs解决
(2)配置服务启动类型:sc \\目标IP config tlntsvr start= auto
【说明】
A、 tlntsvr为Telnet的服务名。可在计算机管理/服务/telnet/属性下找到这样的内容:可执行文件的路径:C:\WINDOWS\system32\tlntsvr.exe,则其服务名为tlntsvr。对于其它服务,有一点要注意:如RPC服务的可执行文件的路径:C:\WINDOWS\system32\svchost -k rpcss,但它的服务名是rpcss,而非svchost。
B、 在start=和启动类型之间必须一个空格
C、 SC命令几乎可以用于所有服务的配置。
(3)启动服务:sc \\目标IP start tlntsvr
【说明】不能用sc start/stop来启动/停止RPC服务,出错提示为:请求的控件对此服务无效。
<方法3>利用SC设置服务启动类型,然后使用tlntadmn启动Telnet服务
命令:tlntadmn \\目标IP start
【说明】
A、 tlntadmn可以启动/停止Telnet服务,但不能设置Telnet服务启动类型。
B、 03/XP上tlntadmn不能管理2000上的Telnet服务,反之亦然。即tlntadmn的版本是不同的,操作上也有所不同,2000的tlntadmn不支持远程功能,采用级连菜单方式。
C、 03/XP上的tlntadmn命令本身带有-u –p参数,可以指定对目标机操作的用户身份和口令,注意不支持空密码。2000上的tlntadmn命令没有-u –p参数
D、 tlntadmn命令还可以修改Telnet服务的默认端口:23为其它值(sc config命令无此功能)。03/XP执行此操作的命令格式为:tlntadmn \\目标IP config port=xxxx。xxxx为小于1024的正数。
于2000的tlntadmn不支持远程功能,03/XP上tlntadmn又不能管理2000上的Telnet服务,这时就不
问题7:远程修改目标机上的Telnet服务默认端口,比如托管的服务器,原来基于安全考虑,在服务器上把telnet的默认端口TCP:23给封掉了,或被连接中的某个防火墙的设置所阻止。
1、若目标为03/XP,可以按照上面方法,用tlntadmn修改telnet服务的默认端口。
2、若目标为2000,由得不利用远程注册表功能了。具体操作如下:
(1)利用前面讲过的“远程注册表”功能连过去
(2)搜索:(2000注册表中的称谓是:名称、类型、数据;03注册表中的称谓是:项、值、数据)类型/值:telnetport,(具体位置:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\TelnetServerΙ.0下)
(3)将telnetport的默认值由23(十进制数)改为0-1024范围内的任意值即可,