首页 > 技术文章 > 无法远程桌面连接

gaokiddking 2013-06-26 10:13 原文

服务器无法被远程桌面连接。 我有3台Windows 2003的服务器,突然就不能通过远程桌面登陆。查看服务器没有安装终端服务授权,查看注册表远程桌面的端口是默认的3389,在客户端Telnet服务器的3389端口也是没有问题的,在服务中查看终端服务的状态也是启动的,如果在服务器上面远程服务器自己则可以正常出现账号密码输入框。在事件日志中也没有发现可疑的警告或错误。

 

回答: 根据您的描述,我对这个问题的理解是: 3台Windows Server 2003服务器突然不能通过远程桌面登陆。服务器没有安装终端服务授权。默认端口是3389并且Telnet没有问题,终端服务的状态也是启动的。

针对这个问题,我们需要先了解一些背景情况以做出准备的分析。感谢您的协助:

  1. 这3台服务器是否安装有终端服务器角色?或者是仅仅作为普通服务器使用的 (注意:如果Windows Server 2003安装了终端服务器角色的话,可以允许多用户访问,而普通服务器仅允许2个远程用户)
  2. 这个问题在所有的机器都碰到还是仅仅有几台特定的机器不能远程桌面到这3台服务器?
  3. 当我们使用远程桌面时,有什么错误发生?

分析:

从您所做的测试来说,如果从服务器远程桌面登陆自己(mstsc 127.0.0.1)可以的话,说明本地远程桌面的组件是好的。另外如果Telnet成功的话,说明3389端口是打开的。远程桌面访问失败有很多原因造成:您看到的文章来自活动目录seo http://adirectory.blog.com/category/system-network-administration/

  1. 服务器上存在资源不够,比如CPU,内存占用过高的情况(可以用任务管理器来检查),网络负载过大,这样的情况远程桌面会失败
  2. 用户权限不足
  3. 服务器的设置问题
  4. 如果您的环境是终端服务器,那么这个问题和授权也是有关的,那就是一开始为什么我要确认是否我们已经安装了终端服务器角色的原因之一。

建议:

  1. 如果您安装了终端服务器角色,但是您没有授权的话,一旦终端服务器过了Grace Period,用户便不能连接,除非安装授权。这个很符合您突然不能访问的情况,所以我建议您第一步先检查一下这个。
  2. 由于服务器的系统资源不足也会造成这样的问题,我建议重启服务器,看看用户能否进行访问。
  3. 检查相关权限。首先我们必须确保“远程桌面”是启用的。关于这一点,我们可以查看这篇文章:启用或禁用远程桌面。然后确保需要访问远程桌面的用户是添加到“远程桌面用户组”里面的:将用户添加到 Remote Desktop Users 组。然后我们检查一下组策略。添加用户到“允许通过终端服务登录”:允许通过终端服务登录。更详细的信息,我们还可以查看这篇文章:使用户可以远程连接到服务器
  4. 我建议暂时同时禁用客户端和服务器端的Windows防火墙和三方防火墙软件,看看问题能否解决。
  5. 请在服务器上运行注册表编辑器,依次展开【HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server】,然后在右栏中找到“fDenyTSConnections”键,确保其值为“0“,如果不是,请双击打开后将该键值修改为“0”,点击“确定”按钮,最后关闭注册表编辑器,重启Terminal Services服务。

针对您提到Terminal Service在启动后,“重启”的选项是灰色,我建议采用下面的步骤:

  1. 到下面的链接下载DevCon 命令行实用工具:
  2. 安装此文件。关于DevCon的具体信息,我们可以参看这篇文章:
  3. 打开命令行逐条运行下面的命令。每复制粘贴一条命令后,请按“回车键”。
    • devcon install %windir%\inf\machine.inf root\RDP_MOU
    • devcon install %windir%\inf\machine.inf root\RDP_KBD
    • devcon install %windir%\inf\machine.inf RDP.serviceinstall
    • devcon install %windir%\inf\machine.inf root\legacy_RDPWD
    • devcon install %windir%\inf\machine.inf rdpdr.serviceinstall
    • devcon install %windir%\inf\machine.inf rdpdr.serviceinstall
    • devcon install %windir%\inf\machine.inf legacy_TDPIPE
    • devcon install %windir%\inf\machine.inf legacy_TDPTCP
    • devcon install %windir%\inf\machine.inf legacy_termservice
  4. 重启服务器。
  5. 确保远程桌面是启用的并且3389端口是通畅的,然后再次看看我们的问题是否已经解决

目前的情况来,我建议做以下步骤:

  1. 备份有问题机器的注册表,将[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server]注册表信息从一台好的机器导出来然后导入有问题的机器。
  2. 我建议在Windows Server 2003上做一下干净启动(Clean Boot)看看是否还有问题。

推荐阅读