作在工作中,经常需要远程连接到服务器上,常常遇到“终端服务器超出最大连接数”,导致无法正常登陆服务器。下面讲解在网上流传的几种方法,来解决这一问题。
解决这个现像的办法很多,如果马上需要登陆服务器,最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 [{UserName | SessionName | SessionID}] [/server:ServerName]
指定待查询用户的登录名。
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在默认情况下最多只允许两个用户进行远程终端连接,当达到两个远程桌面连接的到时候,再有人尝试连接,就会提示已经达到最大终端数,无法连上了。
网上列举一些解决办法:
有权限的使用“query user”查看当前在线列表,然后根据用户ID,使用“logoff ID” 命令来踢掉一个用户,不要乱踢哦。
使用命令行来进行连接,如”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