最近遇到了一个比较棘手的问题,用户远程桌面无法连接,我的博文中之前也写到了一篇远程桌面排错,但是这次的和之前的大不相同


= = 原因排查步骤

1)首先当然是查看报错,这个是我自己机器上截图的,报错信息都一样

远程桌面排错(已解决)_桌面


2)首先查看服务器是否开启了远程访问

远程桌面排错(已解决)_排错_02


3)查看目标是否可以ping通

远程桌面排错(已解决)_桌面_03


4)查看服务是否正常启动

远程桌面排错(已解决)_排错_04


5)如果要正常远程到目标必须可以telnet到目标的远程端口,默认为3389,这个端口不通,我们之前已经将防火墙关闭了

远程桌面排错(已解决)_桌面_05


6)本机上telnet 127.0.0.1 3389,这么做的话可以排除外界因素的干扰,当然还是不通


7)然后我在本机使用netstat -ano 命令查看监听的端口是否有3389,并没有找到3389端口,5800和5900端口是VNC服务器的端口,也是一款远程软件,还好有它不然都没法排错

 Proto  Local Address          Foreign Address        State           PID

 TCP    0.0.0.0:80             0.0.0.0:0              LISTENING       4

  TCP    0.0.0.0:135            0.0.0.0:0              LISTENING       924

  TCP    0.0.0.0:445            0.0.0.0:0              LISTENING       4

  TCP    0.0.0.0:1311           0.0.0.0:0              LISTENING       2260

  TCP    0.0.0.0:5800           0.0.0.0:0              LISTENING       2344

  TCP    0.0.0.0:5900           0.0.0.0:0              LISTENING       2344

  TCP    0.0.0.0:9083           0.0.0.0:0              LISTENING       1488

  TCP    0.0.0.0:9527           0.0.0.0:0              LISTENING       1740

  TCP    0.0.0.0:49152          0.0.0.0:0              LISTENING       636

  TCP    0.0.0.0:49153          0.0.0.0:0              LISTENING       248

  TCP    0.0.0.0:49154          0.0.0.0:0              LISTENING       532

  TCP    0.0.0.0:49183          0.0.0.0:0              LISTENING       744

  TCP    0.0.0.0:49214          0.0.0.0:0              LISTENING       736

  TCP    0.0.0.0:49219          0.0.0.0:0              LISTENING       4200

  TCP    10.124.84.165:3181     0.0.0.0:0              LISTENING       2036

  TCP    10.124.84.165:5900     10.124.84.17:61778     ESTABLISHED     2344

  TCP    10.124.84.165:49155    10.124.84.62:135       TIME_WAIT       0

  TCP    10.124.84.165:49156    10.124.84.62:49159     TIME_WAIT       0

  TCP    10.124.84.165:49162    10.124.84.61:135       TIME_WAIT       0

  TCP    10.124.84.165:49163    10.124.84.61:49155     TIME_WAIT       0

  TCP    10.124.84.165:49184    10.124.84.62:49155     TIME_WAIT       0

  TCP    10.124.84.165:49188    9.9.200.232:80         CLOSE_WAIT      2028

  TCP    10.124.84.165:49190    9.9.200.232:37527      ESTABLISHED     1836

  TCP    10.124.84.165:49192    10.124.84.62:135       TIME_WAIT       0

  TCP    10.124.84.165:49193    10.124.84.62:49155     TIME_WAIT       0

  TCP    10.124.84.165:49220    10.124.84.62:135       ESTABLISHED     532

  TCP    10.124.84.165:49221    10.124.84.62:49155     ESTABLISHED     532

  TCP    10.124.84.165:49237    10.124.84.87:8014      ESTABLISHED     4040

  TCP    10.124.84.165:49238    10.124.84.16:3183      ESTABLISHED     2036

  TCP    10.124.84.165:49246    10.124.84.62:135       TIME_WAIT       0

  TCP    10.124.84.165:49247    10.124.84.62:49155     ESTABLISHED     744

  TCP    10.124.84.165:49265    9.9.200.232:80         CLOSE_WAIT      5260

  TCP    10.124.84.165:49270    9.9.200.232:80         TIME_WAIT       0

  TCP    10.124.84.165:49271    10.124.84.16:2059      TIME_WAIT       0

  TCP    10.124.84.165:49273    9.9.200.232:80         TIME_WAIT       0

  TCP    10.124.84.165:49278    10.124.84.102:445      ESTABLISHED     4

  TCP    10.124.84.165:49282    111.108.54.16:80       SYN_SENT        12

  TCP    127.0.0.1:36600        0.0.0.0:0              LISTENING       1836

  TCP    [::]:80                [::]:0                 LISTENING       4

  TCP    [::]:135               [::]:0                 LISTENING       924

  TCP    [::]:445               [::]:0                 LISTENING       4

  TCP    [::]:1311              [::]:0                 LISTENING       2260

  TCP    [::]:9527              [::]:0                 LISTENING       1740

  TCP    [::]:49152             [::]:0                 LISTENING       636

  TCP    [::]:49153             [::]:0                 LISTENING       248

  TCP    [::]:49154             [::]:0                 LISTENING       532

  TCP    [::]:49183             [::]:0                 LISTENING       744

  TCP    [::]:49214             [::]:0                 LISTENING       736

  TCP    [::]:49219             [::]:0                 LISTENING       4200

  UDP    0.0.0.0:123            *:*                                    540

  UDP    0.0.0.0:500            *:*                                    532

  UDP    0.0.0.0:4500           *:*                                    532

  UDP    0.0.0.0:5355           *:*                                    12

  UDP    0.0.0.0:9528           *:*                                    1740

  UDP    0.0.0.0:36599          *:*                                    2028

  UDP    0.0.0.0:58868          *:*                                    2028

  UDP    0.0.0.0:58869          *:*                                    2028

  UDP    0.0.0.0:58870          *:*                                    2028

  UDP    10.124.84.165:3001     *:*                                    1740

  UDP    127.0.0.1:51709        *:*                                    4040

  UDP    127.0.0.1:52623        *:*                                    1488

  UDP    127.0.0.1:52685        *:*                                    280

  UDP    127.0.0.1:58867        *:*                                    1836

  UDP    127.0.0.1:59657        *:*                                    744

  UDP    127.0.0.1:59660        *:*                                    12

  UDP    [::]:123               *:*                                    540

  UDP    [::]:500               *:*                                    532

  UDP    [::]:4500              *:*                                    532

  UDP    [::]:5355              *:*                                    12

  UDP    [::]:9528              *:*                                    1740


8)端口都找不到,是不是有人修改了默认的3389端口,在注册表如下路径

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp\PortNumber查看值是否为3389,我这里并没有修改,但是我考虑可能是端口被占用?


9)我就修改端口试试看吧,修改端口的话需要修改两个值,修改完之后重启RDS服务即可

远程桌面排错(已解决)_排错_06


基数调整为十进制然后填入3390

远程桌面排错(已解决)_排错_07


重新启动服务后就会生效

远程桌面排错(已解决)_桌面_08


= = 考虑第三方因素

1)之前同事处理过一个问题,就是因为其他服务占用了3389端口后,修改端口就可以访问了,但是我处理的这台服务器有一个不同点就是他本地都监听不到端口


2)修改端口后依旧是之前的问题,之后听客户说他们有一块心跳网卡,之前远程还是正常的,可能是心跳网卡有关系,将心跳网卡禁用后,我重启了服务器,好像和它没什么关系


3)考虑第三方服务造成了服务故障?cmd中输入msconfig,这个操作需要重启,我还关闭了杀毒软件

远程桌面排错(已解决)_桌面_09


4)可能是RDS组件无法使用3389端口?,我就下载了一些RDS组件的更新,系统是08R2企业版,前三个正常安装,后面的不适用,没有什么影响,安装完成后重启

     升级RDS相关的组件:

Package: Winscard.dll

----------------------------------------------------------- 

KB Article Number (s) : 2531912  

Language: All (Global)  

Platform: x64  

Location: ( http://hotfixv4.microsoft.com/Windows%207/Windows%20Server2008%20R2%20SP1/sp2/Fix371487/7600/free/433940_intl_x64_zip.exe)

 

Package: Mstsc.exe

----------------------------------------------------------- 

KB Article Number (s) : 2870165  

Language: All (Global)  

Platform: x64  

Location: ( http://hotfixv4.microsoft.com/Windows%207/Windows%20Server2008%20R2%20SP1/sp2/Fix451420/7600/free/465746_intl_x64_zip.exe )

 

Package: mstscax.dll

----------------------------------------------------------- 

KB Article Number (s) : 2925429  

Language: All (Global)  

Platform: x64  

Location: ( http://hotfixv4.microsoft.com/Windows%207/Windows%20Server2008%20R2%20SP1/sp2/Fix495746/7600/free/474212_intl_x64_zip.exe )

 

Package:Win32k.sys

----------------------------------------------------------- 

KB ArticleNumber (s) : 2866519  

Language:All (Global)  

Platform:x64  

Location:( http://hotfixv4.microsoft.com/Windows%207/Windows%20Server2008%20R2%20SP1/sp2/Fix462371/7600/free/465697_intl_x64_zip.exe )

 

Package:termsrv.dll

----------------------------------------------------------- 

KBArticle Number (s) : 2878424  

Language:All (Global)  

Platform:x64  

Location:( http://hotfixv4.microsoft.com/Windows%207/Windows%20Server2008%20R2%20SP1/sp2/Fix472988/7600/free/467239_intl_x64_zip.exe )

 

Package:Winscard.dll

----------------------------------------------------------- 

KBArticle Number (s) : 2833914  

Language:All (Global)  

Platform:x64  

Location:( http://hotfixv4.microsoft.com/Windows%207/Windows%20Server2008%20R2%20SP1/sp2/Fix427222/7600/free/461319_intl_x64_zip.exe


5)到事件查看器的以下路径:Application and services log\Microsoft\Windows\Remote desktop service或者terminal service,然后我就发现了这条日志,提示RDS服务启动失败

远程桌面排错(已解决)_排错_10


6)和上条日志奇怪的是这里看到的RDS服务状态已经是运行中

远程桌面排错(已解决)_桌面_11


7)将RDS服务启动类型设置为自动,然后检查服务器是否安装了KB2621440 和 KB2667402,这两个更新也是和RDS服务有关的,我检查到服务器是将所有更新都安装了的,如果想检查是否安装了哪个更新可以在cmd中中输入 systeminfo > c:\xx.txt 然后点击文本文档查找KB号即可

补丁下载地址https://technet.microsoft.com/zh-cn/library/security/ms12-020.aspx

这个补丁是Windows 7 和 Server2008 可用的,在下方按照系统版本进行下载


8)基本寻常的方法都试过了,对比有问题和没有问题的服务器,然后将没有问题的服务器RDS文件替换到有问题的服务器,文件在Windows\System32目录下,repcorekmts.dll \ rdpwsx.dll \ rdrmenmptylst.exe(然后重新启动服务器,结果为False)


= = 终极大招

1)一个问题不会无缘无故的出现,最后我只能怀疑是有人动了注册表中的值,最快捷最方便的解决方法便是将没问题的服务器注册表值导入到有问题服务器的注册表中

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Terminal Server下的两个值导出

注意,这项操作两台服务器都要进行,有问题的服务器最好将注册表项进行备份

远程桌面排错(已解决)_远程_12

2)然后把导出来的注册表值在问题服务器上运行,就会进行导入操作,如果你是导出的Terminal Server这个项,是不可以进行导入的


3)在导入完成后,要想让注册表生效最好是重启一下服务器


4)重启完成后,我已经可以telnet到3389端口了,这是一个好消息,然而问题并没有解决


5)客户端在mstsc时出现了闪退的现象,和我之前的远程桌面排错服务有点相似


6)报错图如下,看下方,远程许可服务器是可用的

远程桌面排错(已解决)_排错_13

7)造成此现象的原因,这台服务器导入的注册表值中没有配置远程桌面主机服务,我将此服务器上的远程桌面服务删除,然后添加,这样注册表中才会存在远程桌面主机服务的值,此时就可以进行远程桌面连接了


8)重新安装远程桌面服务

每个人的环境不同,如果你的环境没有远程桌面许可服务器的话不要安装此角色

远程桌面排错(已解决)_排错_14

远程桌面排错(已解决)_桌面_15



问题处理完成,如果在导出注册表项,准备导入后出现错误,可能是导出的值损坏了,重新导出导入即可


最后在链接一个别人的博文,其中也写到了一篇远程桌面排错的

http://renzhiyuan.blog.51cto.com/10433137/1830685