一、问题
我用TELNET连上某IP机器,在输入账号和密码前却显示:
Telnet server could not log you in using NTLM
authentication.
Your password may have expired.
Login using username and password
Welcome to Microsoft Telnet Service
login:
这时输入对方机器上的一个administrators组的账号和密码,第一次成功进入很正常,连接始终保持没断过,直到我手动执行exit退出为止。但以后输入账号密码后虽能成功进入,但一分钟后,就自动与对方主机失去了连接。经多次尝试均是这样。为了找到原因,我在虚拟机上安装了同样一个版本的xp
sp3系统,只是启动了telnet服务、配置了IP地址、允许防火墙通过对tcp
23端口的访问。telnet进去时,同样出现的是前面的提示,但输入正确的账号和密码后,一直都没有中断连接。
二、解决办法
1、原由
出现Telnet server could not log you
in using NTLM authentication(Telnet服务器无法登录使用NTLM身份验证你)的提示,说明:对方已开启telnet服务,只是我在登陆时没有通过NTLM身份验证。
2、什么是NTLM认证
NTML是两台计算机(其中至少有一台运行的是WindowsNT)之间的事务验证协议,也是为没有加入到域中(如单机服务器、工作组)提供的身份验证协议。如果使用NTML身份验证,则基于windows的客户端将使用windows安全上下文进行身份验证,系统也不会提示输入用户名和密码,用户名和密码是加密的。如果不使用NTLM身份验证,则用户名和密码会以明文方式发送到telnet服务器上,任何捕获身份验证过程数据包的人都可轻易获取账号密码。如果telnet客户端不是windowsNT、2000、2003的系统,则可能无法登陆。如果客户端是这样的系统,但没有启用NTML也会出现无法登陆的现象。
3、登陆telnet服务器所需要的权限
如果telnet服务器是独立服务器或成员服务器,要在“计算机管理”窗口中建立本地组TelnetClinets(组的名字是固定的,不能任意改变),并把用户添加到TelnetClinets组中。如果Telnet服务器是域控制器,则要把用户添加到Administrators组中。
4、解决办法
第一种办法:关闭NTML身份验证的限制(不安全)
tlntadmn config [-ntlm][+passwd]
第二种办法:为客户端和服务端上的administrator账户设置相同的密码,在客户端以administrator用户的身份打开cmd.exe,然后执行telnet
telnetserver即可。参考另一篇博文:http://blog.sina.com.cn/s/blog_5cdb72780100ifkj.html。
第三种办法:借助第三方的工具
参见中安网培的视频教程:
您可以使用 tlntadmn
命令管理运行 Telnet 服务器的本地或远程计算机。该命令是 Windows XP 和
Windows Server 2003 家族中的新增命令。有关使用
tlntadmn 命令的详细信息,请参阅 Telnet 服务器的 Telnet 命令行参考http://technet.microsoft.com/zh-cn/library/cc772789(WS.10).aspx。
系统需求
要管理的计算机和在其上使用
tlntadmn 命令的计算机都必须在运行
Windows NT、Windows 2000、Windows XP
或 Windows Server 2003 家族成员。如果其中任一计算机在运行 Windows NT
或 Windows 2000,它也必须在运行 UNIX 2.0 版本的 Windows Services。
安全考虑事项
要使用 tlntadmn
命令管理本地或远程计算机,您必须使用管理凭据登录到本地计算机。要管理远程计算机,您还必须执行以下操作之一:
使用在远程计算机上具有管理凭据的帐户登录到本地计算机
使用 -u 和
-p 参数为远程计算机提供管理凭据
使用 -u 和
-p 参数是非 NTLM
的身份验证方法。因为凭据以明文形式发送,所以该方法较不安全。作为安全措施,您不能使用
-s、-k 和 -m
参数,即使您使用 -u 和 -p
参数提供了凭据。-s、-k 和
-m 参数分别用于列出会话、终结会话及发送消息。
管理运行 Telnet Server 的计算机
语法
tlntadmn
[\\RemoteServer] [start]
[stop] [pause]
[continue] [-u
UserName-p Password]
参数
\\RemoteServer
指定要管理的远程服务器名称。如果没有指定服务器,则假定使用本地服务器。
start
启动 Telnet Server。
stop
停止 Telnet Server。
pause
中断 Telnet Server。
continue
恢复 Telnet Server。
-uUserName-pPassword
指定要管理的远程服务器的管理凭据。如果您要管理远程服务器,但未使用管理凭据登录,则必须提供该参数。
/?
在命令提示符下显示帮助。
管理 Telnet 会话
语法
tlntadmn
[\\RemoteServer] [-s]
[-k{SessionID | all}]
[-m {SessionID | all}
"Message"]
参数
\\RemoteServer
指定要管理的远程服务器名称。如果没有指定服务器,则假定使用本地服务器。
-s
显示活动的 Telnet 会话。
-k{SessionID |
all}
终止会话。键入会话 ID 以终止特定会话,或者键入 all 终止所有会话。
-m {SessionID |
all}
"Message"
向一个或多个会话发送消息。键入会话 ID 以便将消息发送给特定会话,或者键入 all
将消息发送给所有会话。在引号内键入要发送的消息(即
"Message")。
/?
在命令提示符下显示帮助。
注释
要在管理远程服务器时使用这些参数,您必须使用管理凭据登录到远程服务器。
在运行 Telnet Server 的计算机上设置默认域
语法
tlntadmn
[\\RemoteServer] config
[dom=DomainName] [-u
UserName-p Password]
参数
\\RemoteServer
指定要管理的远程服务器名称。如果没有指定服务器,则假定使用本地服务器。
dom=DomainName
指定要设置为默认域的域。
-uUserName-pPassword
指定要管理的远程服务器的管理凭据。如果您要管理远程服务器,但未使用管理凭据登录,则必须提供该参数。
/?
在命令提示符下显示帮助。
示例
要使 Server1 作为本地服务器上的默认域,请键入:
tlntadmn config dom=Server1
在运行 Telnet Server 的计算机上映射 Alt 键
语法
tlntadmn
[\\RemoteServer] config
[ctrlakeymap={yes |
no}] [-u
UserName-p Password]
参数
\\RemoteServer
指定要管理的远程服务器名称。如果没有指定服务器,则假定使用本地服务器。
ctrlakeymap={yes |
no}
指定是否要让 Telnet Server 把 Ctrl+A 解释为 Alt。键入 yes
映射快捷键,或者键入 no 禁止映射。
-uUserName-pPassword
指定要管理的远程服务器的管理凭据。如果您要管理远程服务器,但未使用管理凭据登录,则必须提供该参数。
/?
在命令提示符下显示帮助。
注释
如果不映射 Alt 键,则 Telnet Server 不会把 Alt 键发送给可能依靠该键的应用程序。
在运行 Telnet Server 的计算机上设置连接的最大数量
语法
tlntadmn
[\\RemoteServer] config
[maxconn=PositiveInteger]
[-u UserName-p
Password]
参数
\\RemoteServer
指定要管理的远程服务器名称。如果没有指定服务器,则假定使用本地服务器。
maxconn=PositiveInteger
设置连接的最大数量。必须使用小于 10,000,000 的正整数来指定该数。
-uUserName-pPassword
指定要管理的远程服务器的管理凭据。如果您要管理远程服务器,但未使用管理凭据登录,则必须提供该参数。
/?
在命令提示符下显示帮助。
在运行 Telnet Server 的计算机上设置失败登录尝试的最大次数
语法
tlntadmn
[\\RemoteServer] config
[maxfail=PositiveInteger]
[-u UserName-p
Password]
参数
\\RemoteServer
指定要管理的远程服务器名称。如果没有指定服务器,则假定使用本地服务器。
maxfail=PositiveInteger
设置允许用户执行的最大失败登录尝试次数。必须用一个小于 100 的正整数来指定该数。
-uUserName-pPassword
指定要管理的远程服务器的管理凭据。如果您要管理远程服务器,但未使用管理凭据登录,则必须提供该参数。
/?
在命令提示符下显示帮助。
在运行 Telnet Server 的计算机上设置操作模式
语法
tlntadmn
[\\RemoteServer] config
[mode={console |
stream}] [-u
UserName-p Password]
参数
\\RemoteServer
指定要管理的远程服务器的名称。如果没有指定服务器,则假定使用本地服务器。
mode={ console|
stream}
指定操作模式。
-uUserName-pPassword
指定要管理的远程服务器的管理凭据。如果您要管理远程服务器,但未使用管理凭据登录,则必须提供该参数。
/?
在命令提示符下显示帮助。
在运行 Telnet Server 的计算机上设置 Telnet 端口
语法
tlntadmn
[\\RemoteServer] config
[port=IntegerValue] [-u
UserName-p Password]
参数
\\RemoteServer
指定要管理的远程服务器名称。如果没有指定服务器,则假定使用本地服务器。
port=IntegerValue
设置 Telnet 端口。必须使用小于 1,024 的整数指定端口。
-uUserName-pPassword
指定要管理的远程服务器的管理凭据。如果您要管理远程服务器,但未使用管理凭据登录,则必须提供该参数。
/?
在命令提示符下显示帮助。
在运行 Telnet Server 的计算机上设置身份验证方法
语法
tlntadmn
[\\RemoteServer] config
[sec=[{+ |
-}ntlm][{+ |
-}passwd]] [-u
UserName-p Password]
参数
\\RemoteServer
指定要管理的远程服务器名称。如果没有指定服务器,则假定使用本地服务器。
sec=[{+ |
-}ntlm][{+ |
-}passwd]
指定是否使用 NTLM、密码或这两者对登录尝试进行身份验证。要使用特定类型的身份验证,请在该身份验证类型前键入加号
(+)。要防止使用特定类型的身份验证,请在该类身份验证之前键入减号 (-)。
-uUserName-pPassword
指定要管理的远程服务器的管理凭据。如果您要管理远程服务器,但未使用管理凭据登录,则必须提供该参数。
/?
在命令提示符下显示帮助。
备注
NTLM 是两台计算机(一台或两台计算机在运行 Windows NT)之间的事务验证协议。另外,NTLM
是为没有加入到域中的计算机(如单机服务器和工作组)提供的身份验证协议。
在运行 Telnet Server 的计算机上设置空闲会话超时
语法
tlntadmn
[\\RemoteServer] config
[timeout=hh:mm:ss]
[-u UserName-p
Password]
参数
\\RemoteServer
指定要管理的远程服务器名称。如果没有指定服务器,则假定使用本地服务器。
timeout=hh:mm:ss
以小时、分钟和秒为单位设置超时时间段。
-uUserName-pPassword
指定要管理的远程服务器的管理凭据。如果您要管理远程服务器,但未使用管理凭据登录,则必须提供该参数。
/?
在命令提示符下显示帮助。
备注
要管理的计算机和在其上使用 tlntadmn 命令的计算机都必须在运行
Windows NT、Windows 2000、Windows XP
或 Windows Server 2003 家族成员。如果其中任一计算机在运行
Windows NT 或 Windows 2000,它也必须在运行
UNIX 2.0 版本的 Windows Services。
要使用 tlntadmn
命令,您必须使用管理凭据登录到本地计算机。要管理远程计算机,您还必须为远程计算机提供管理凭据。使用具有本地计算机和远程计算机管理凭据的帐户登录到本地计算机即可做到这一点。如果不能使用这种方法,可使用
-u 和 -p 参数为远程计算机提供管理凭据。
格式图例
格式
意义
斜体
用户必须提供的信息
粗体
用户必须像显示的一样准确键入的元素
省略号 (...)
可在命令行中重复多次的参数
在括号 ([]) 之间
可选项目
在大括号 ({}) 之间;将选项用管线 (|) 隔开。例如:{even|odd}
用户必须从中只选择一个选项的选项组
Courier font
代码或程序输出