作在工作中,经常需要远程连接到服务器上,常常遇到“终端服务器超出最大连接数”,导致无法正常登陆服务器。下面讲解在网上流传的几种方法,来解决这一问题。

解决这个现像的办法很多,如果马上需要登陆服务器,最easy的方法是:

开始-运行-mstsc /console /v: 服务器名或IP或域名:远程端口:

   如: mstsc /console /v:222.222.215.222:3389

解决方法一:用“注销”方式退出远程桌面,而不是直接关闭窗口;

解决方法二:踢出已经断开的连接用户;

1、首先通过各种方法连接到服务器上(telnet);

2、上去后,查看登陆用户列表。输入命令:query user;

这样你就可以看出有何不同来啦,可以根据你的具体情况而定的。ID为0的用户就是本地登陆的,而在State中看提示,当提示为已断开,则说明用户已经断开还占用着系统资源和通道,这样就可以把该用户踢掉。输入logoff ID,即踢除相应ID的用户。

输入命令:query user
系统返回:
C:>query user
USERNAME        SESSIONNAME     ID    STATE     IDLE TIME    LOGON TIME
k12update       console         1     运行中         2007-3-14 14:57
此时可以看出的可能都不一样,根据具体情况而定。
ID 0 的用户是本地登陆的,ID 1 和 ID 12是3389登陆的用户,前者在运行中,后者已经断开了,但是断开了仍然占用系统资源和通道,我们要把它踢掉。如下进行操作即可。
输入命令:logoff 1

解决方法三:限制已断开连接的会话存在时间;(推荐)

一般情况下,我们在维护远程服务器时,不可能长时间在线,但是系统默认的却是只要登录就不再断开。因此,我们可以修改这一默认设置,给它指定一个自动断开的时间即可。

可以在 Windows 2003 服务器上通过组策略中设置一下来解决问题:单击“开始 → 运行”,输入“gpedit.msc”,回车后打开组策略窗口,然后依次定位到“计算机配置 → 管理模板 → Windows 组件 → 终端服务 → 会话”,然后在右侧窗口中双击“为断开的会话设置时间限制”,在打开的窗口中将“结束断开连接的会话”时间设置为5分钟,或者设置为空闲就断开。或在远程服务器上打开“运行”窗口,输入“tscc.msc”连接设置窗口。然后双击“连接”项右侧的“RDP-Tcp”,切换到“会话”标签,选中“替代用户设置”选项,再给“结束已断开的会话”设置一个合适的时间即可。

解决方法四:增加连接数量,即设置最大连接数再多些;

默认情况下允许远程终端连接的数量是2个用户,我们可以根据需要适当增加远程连接同时在线的用户数。

单击“开始→运行”,输入 “gpedit.msc”打开组策略编辑器窗口,依次定位到“计算机配置 → 管理模板 → Windows 组件 → 终端服务”,再双击右侧的“限制连接数量”,将其TS允许的最大连接数设置大一些即可。

经过上面两个配置(方法三&方法四),基本上就可以保证远程终端连接时不再受限。但仍有人反映,当前同时只有一个用户进行连接,却提示超出最大允许链接数,这又是什么原因呢?出现这种情况是因为操作不当所造成的。在上一个帐户登录远程桌面后退出时,没有采用注销的方式,而是直接关闭远程桌面窗口,那么导致该会话并没有被释放,而是继续保留在服务器端,占用了连接数,这样就会影响下一个用户的正常登录了。

解决方法五:限制用户会话数;

对Terminal Services进行限制,使得一个用户仅仅能够连接一次。对于Windows Server 2003,请在Terminal Services Configuration(Terminal Services配置)中将“限制每位用户只有拥有一个会话”(Restrict each user to one session)设置为“是”(Yes)。此外,您可以将“限制终端服务用户使用单个远程会话”组策略设置为“启用”。

注意:版本不一样解决的方法有异!

下面介绍一些mstsc的参数:


mstsc语法

  mstsc.exe {ConnectionFile|/v:server} [/console] [/f] [/w:width /h:height]

  mstsc.exe /edit"ConnectionFile"

  mstsc.exe /migrate

mstsc参数

  ConnectionFile 指定用于连接的 .rdp 文件的名称

  /v:server[;port] 指定要连接的远程计算机

  /admin 将连接到会话以管理服务器

  /f 在全屏幕模式下启动“远程桌面”连接

  /w:width 指定远程桌面窗口的宽度

  /h:height 指定远程桌面窗口的高度

  /public 在公用模式下运行远程桌面

  /span 是远程计算机的高度和宽度与本地虚拟桌面相匹配,如有必要扩展到多个显示器。若要扩展到多个显示器,所有显示必须具有相同的高度并垂直排列

  /console 连接到指定 Windows 2000 Server 的控制台会话

  /edit 打开指定的 .rdp 文件进行编辑

  /migrate 将使用“客户端连接管理器”创建的旧版连接文件迁移到新的 .rdp 连接文件中

Query user

显示有关终端服务器上的用户会话的信息。

语法

query user [{UserName | SessionName | SessionID}] [/server:ServerName]

参数
UserName

指定待查询用户的登录名。

SessionName

指定待查询会话的名称。

SessionID

指定待查询会话的 ID。

/server:ServerName

指定要查询的终端服务器。否则使用当前终端服务器。

/?

在命令提示符下显示帮助。

注释

  • 如果特定用户登录到特定的终端服务器,则可以使用该命令查找。Query user 返回以下信息:

    • 用户名

    • 终端服务器上的会话名

    • 会话 ID

    • 会话的状态(活动或断开连接)

    • 空闲时间(在该会话中自上次击键或鼠标移动以来经过的分钟数)

    • 用户登录的日期和时间


  • 要使用 query user,您必须有完全控制权限或查询信息的特殊访问权限。

  • 如果您不指定用户名、会话名称或会话标识而直接使用 query user 命令,则会返回一个登录到该服务器的所有用户的列表。另外,也可以使用 query session 显示服务器上所有会话的列表。

  • query user 返回信息时,在当前会话前将显示小于号 (>)。

  • 只有在从远程服务器使用 query user 时才需要 /server 参数。

示例

要显示有关登录到系统的所有用户的信息,请键入:

query user

要显示有关服务器 SERVER1 上用户 USER1 的信息,请键入:

query user USER1 /server:SERVER1 例如 : query user /server:11.11.11.23


还有一篇文章是这要介绍的,感觉也是正确的,我没有去测试:http://www.nigesb.com/windows-2003-rdp-max-connecting-limit.html

windows 2003在默认情况下最多只允许两个用户进行远程终端连接,当达到两个远程桌面连接的到时候,再有人尝试连接,就会提示已经达到最大终端数,无法连上了。

网上列举一些解决办法:

  1. 有权限的使用“query user”查看当前在线列表,然后根据用户ID,使用“logoff ID” 命令来踢掉一个用户,不要乱踢哦。

  2. 使用命令行来进行连接,如”mstsc /console /v:222.222.215.222:3389“,但是很多时候是不管用的。

本人认为最好的方法是找一台2003的服务器(实际上win7和xp也是可以的,后面会说),然后再运行处输入:

tsmmc.msc

就会弹出一个远程桌面控制台,右键点击左边的“远程桌面”,选择“新建远程桌面”,按照要求填写要连接的虚拟主机的ip、用户名、密码、域名,然后点击“确定”,然后就可以登录了,十分地方便。

假如手头一下找不到2003肿么办,如果你是win7,也是可以安装这个tsmmc的,需要去下载一个微软的程序包,200来兆,安装完之后,去控制面板的程序与功能找到服务器管理工具添加就ok啦!补丁名字如下:

Windows6.1-KB958830-x86-RefreshPkg.msu//32位

Windows6.1-KB958830-x64-RefreshPkg.msu//64位

微软官方下载地址:

http://www.microsoft.com/zh-cn/download/details.aspx?id=7887

那么xp呢,难道xp就要被鄙视了么,当然不是,下载下面的压缩包,解压到xp的C:WINDOWS\system32目录下,并且运行一下里面的批处理进行dll注册就可以使用tsmmc.msc工具了。

tsmmc.zip下载:

http://pan.baidu.com/share/link?shareid=133341&uk=2905237318