
简介一份介绍远程登录命令Telnet使用方法的 PDF 技术文档面向软件开发、网络运维以及需要远程管理计算机的工程师帮助读者解决如何通过网络连接远程主机、执行管理命令的常见问题。文档以 Windows 命令提示符为使用场景从 Telnet 客户端启动开始系统梳理了从建立连接到安全断开所涉及的完整操作流程。内容不仅涵盖最基本的连接与断开命令还详细说明了如何通过指定端口号连接远程服务器、如何设置终端类型ANSI、VT100、VT52、VTNT、如何开启本地回显、如何配置转义字符、如何启用 NTLM 身份验证以及如何记录日志等高级选项。同时文档还介绍了发送 Telnet 命令的方法包括终止输出、发送“Are you there”询问、执行同步操作等并补充了用于远程管理服务器的管理命令涵盖查看活动会话、终止指定会话以及向会话发送消息等运维场景。压缩包仅含 1 个 PDF 文件大小 14KB内容精炼便携便于离线查阅。目前已有 184 人学习下载特别适合刚接触远程登录的初学者按步骤学习也可作为网络管理员和运维工程师日常查询的速查手册帮助读者系统掌握远程登录配置、会话管理与故障处理的核心技巧。1. telnet 命令没死老协议在现代排障里仍是刚需半夜接到接口联调报障第一反应不是打开抓包工具而是在命令提示符里敲 telnet 命令。telnet 命令是 Windows 自带的远程终端工具也是验证 TCP 端口是否放通最快的“裸测”手段。做软件开发的人容易低估它觉得 Telnet 协议太老做运维的人清楚很多网络设备的初始调试还指着它。这份 5 页 PDF 把 Windows 上 Telnet Client 的完整命令集和 Telnet Server 端的管理入口 tlntadmn 都列全了适合需要手动联调、排查端口连通性、以及管理 Windows Telnet Server 的从业者。下面按客户端、服务端、选项设置、避坑排查的顺序拆开讲最后落到能直接抄的自动化探测脚本。2. 客户端命令域从启动到断开上下文切换是关键2.1 启动客户端与退出无参数 telnet、quit 和直连写法这份 PDF 的第一页就强调了一件事运行 telnet 时不使用参数会进入以 telnet 提示符表明的客户端上下文。也就是说cmd 提示符和 telnet 提示符是两个不同的“命令域”。在 cmd 下你能执行的是 telnet 命令本身以及 Windows 的其他命令在 telnet 下你能用的只能是 open、close、quit、set、send、display 这一组。很多人一开始会栽在“命令敲了没反应”上其实是没分清当前处在哪个提示符。C:\Users\admintelnet Welcome to Microsoft Telnet Client Escape Character is CTRL] telnet逻辑说明第一行是 Windows 命令提示符执行 telnet 后打印欢迎信息并给出当前转义字符是 CTRL]最后进入 telnet 提示符。此时客户端已经启动等待你输入子命令。参数说明无参数运行 telnet 就是启动 Telnet Client如果需要在 cmd 下直接查看帮助可以带 /?。quit 命令可简写为 q作用是停止 Telnet Client。注意telnet /? 只是在命令行打印帮助文本不会进入交互模式这两个入口不要搞混。补一句很多新手不知道的Windows 10 和 Windows 11 默认不安装 Telnet Clientcmd 里直接敲 telnet 会提示“不是内部或外部命令”。常见做法是先在“启用或关闭 Windows 功能”里勾选 Telnet Client或者用管理员身份运行dism /online /enable-feature /featurename:TelnetClient这条命令启用后不需要重启新开一个命令行窗口就能用。运维同学经常把它写进新机器初始化脚本因为后面所有端口探测都要用到。我进入 telnet 后习惯先敲一次 display 看看当前参数再决定要不要改终端选项这个习惯能省掉后面一大半的“看起来卡死”的误判。除了交互模式PDF 也给出了带参数的直连语法telnet [\RemoteServer]。实际排障时用得更多的是在主机名后面再跟一个端口号比如 telnet 10.0.0.5 8080这个写法虽然不是这份 PDF 的重点但几乎是 Windows 上验证端口放通的默认姿势。交互模式和直连模式的区别在于直连模式连上就进会话交互模式先进 telnet 再通过 open 连接前者适合快速验证后者适合需要连续管理多次会话的场景。2.2 连接、断开与会话切换open、close 与 CTRL]连接远程主机的命令是 open语法为 open [\RemoteServer] [Port]可以简写成 o。如果没有指定端口客户端会使用默认端口 23。PDF 里给的示例是通过 44 号端口连接远程服务器 Redmond命令就是 o redmond 44。这个示例更多是想说明端口可以显式指定而不是只能连默认的 23。telnet o redmond 44 telnet c redmond 44 telnet q逻辑说明第一行建立到 redmond 的 44 端口连接第二行用简写 c 断开连接等价于 close redmond第三行 q 退出 Telnet Client。参数说明close [\RemoteServer] 的 RemoteServer 省略时假定为本地服务器实际在客户端场景里close 不带参数通常就关闭当前会话。quit 才是真正退出客户端程序close 之后你仍然停留在 telnet 提示符这点容易被忽略。会话切换这一块最容易踩坑。文档里专门说明如果在 Telnet 会话中已经连上服务器按 CTRL] 可以退出会话回到 telnet 命令模式去修改参数修改完按 ENTER 键返回会话。这个机制非常实用比如连上远程设备之后发现回显有问题不用断开重连直接 CTRL] 退出来执行 set localecho再按 ENTER 回去就行。端口探测的原理也在这里当 telnet 目标端口成功时屏幕会清空并等待对方 Banner如果失败会提示“无法打开到主机的连接”。防火墙、安全组、服务监听状态任何一个环节断了应用日志里都不会有记录所以 telnet 探测是最直接的链路验证手段。会话模式下可以用 display 查看 Telnet 客户端的当前操作参数包括终端类型、转义字符、本地回显开关等。下表把这几个命令整理在一起命令简写作用open [\RemoteServer] [Port]o连接远程主机端口可省略默认 23close [\RemoteServer]c断开当前连接不退出客户端quitq停止 Telnet ClientCTRL]无从会话临时退回 telnetENTER 返回会话display无查看客户端当前操作参数我通常会用 display 确认刚才的 set 是否真的生效因为某些终端选项要等下一次连接才生效这一条放到第 5 章的避坑里再展开。3. 服务端管理命令tlntadmn 的会话控制与 config 参数组3.1 服务启停与会话管理start、stop、pause、continue 与 -s、-k、-mtlntadmn 命令和 telnet 命令的分工要搞清楚。telnet 处理的是客户端tlntadmn 处理的是运行 Telnet Server 的机器。命令提示符下不带任何参数运行 tlntadmn会显示本地服务器设置加 \RemoteServer 可以指定要管理的远程服务器名称省略时假定为本机。tlntadmn tlntadmn start tlntadmn \\192.168.1.20 stop逻辑说明第一条查看本机 Telnet Server 配置第二条启动本机服务第三条指定远程机器名停止对方的 Telnet Server。参数说明start 启动、stop 停止、pause 中断、continue 恢复/? 显示帮助。远程管理有一个版本兼容限制文档写得很直白只有两台都运行 Windows XP 时才能用 tlntadmn 远程管理从 Windows XP 远程管理 Windows 2000 的 Telnet Server 是不行的。放到今天看这句话基本等于说“远程管理只适合同版本环境跨版本老老实实本机操作”。会话管理是 tlntadmn 更常用的能力。-s 显示活动会话-k 后面跟 SessionID 或 all 来终止会话-m 后面跟 SessionID 或 all 加消息内容向一个或多个会话发送消息。tlntadmn -s tlntadmn -k all tlntadmn -m all Please save and exit逻辑说明在看板场景下先 -s 列出所有会话和 SessionID再决定是 -k 踢掉单个会话还是 -k all 全部清退需要提醒用户时用 -m 广播消息。参数说明-k 的取值是会话 ID 或 all-m 的取值是会话 ID 或 all后面跟用引号包住的消息文本。这三个操作同样要求管理员权限而且跨版本远程管理受前面的兼容限制。生产环境里我一般把 -s 写进巡检脚本定时导出活动会话列表脏会话积累到一定数量再人工介入。3.2 config 参数组从端口到超时的全量设置tlntadmn config 是服务端配置的入口语法是 tlntadmn [\RemoteServer] config 后跟具体参数。先把参数总表列出来后面逐个说参数取值作用auditlocationeventlog / file / both把事件信息送到事件查看器、文件或同时两者auditadmin / -admin / user / -user / fail / -fail控制审核哪些事件domDomainName设置默认域ctrlakeymapyes / no是否把 CTRL 映射为 ALTmaxconn正整数设置最大连接数maxfail小于 100 的正整数最大失败登录次数modeconsole / stream操作模式port小于 1024 的整数Telnet 端口secntlm / -ntlm / passwd / -passwd身份验证方法timeouthh:mm:ss空闲会话超时tlntadmn config auditlocationeventlog tlntadmn config auditadmin fail tlntadmn config maxconn20 tlntadmn config maxfail5 tlntadmn config port23 tlntadmn config secntlm passwd tlntadmn config timeout00:30:00逻辑说明这些命令分别设置审计位置、审核事件类型、最大连接数、失败登录次数上限、服务端口、认证方式和空闲超时。配置通常是一次性完成改完不需要重启服务但建议先不带参数执行 tlntadmn 看一下当前值再逐个参数覆盖。参数说明audit 的加减号含义是开启或停止审核对应事件如果不指定审核类型只审核管理性登录事件并且发送到指定位置。maxconn 必须用正整数指定maxfail 必须小于 100port 必须小于 1024timeout 按 hh:mm:ss 格式给。文档里还专门讲了 ctrlakeymapyes 时Telnet 服务器会把 CTRL 翻译成 ALT 发给应用程序不映射的话依赖 ALT 键的应用会拿不到按键。日文键盘环境对这种映射尤其敏感处理老设备时要注意。还有身份验证 sec 参数。sec[{|-}ntlm][{|-}passwd]控制是否使用 NTLM、密码或两者对登录尝试进行验证。NTLM 指的是两台计算机之间事务的身份验证协议适用于没有加入域的机器比如单机服务器和工作组。生产环境我一般会把 secntlm 打开同时在 Windows 防火墙里限制来源 IP避免只靠密码裸奔。4. set 与 send 详解终端选项、日志与带外控制4.1 set 选项先开回显还是先录日志set 命令用来设置 Telnet Client 的选项完整语法是 set [\RemoteServer] [ntlm] [localecho] [term {ansi | vt100 | vt52 | vtnt}] [escape Character] [logfile FileName] [logging] [bsasdel] [crlf] [delasbs] [mode {console | stream}] [?]。这里的大部分选项只影响本地客户端的呈现和行为不属于协议层面的改动。选项作用ntlm打开 NTLM 身份验证如果远程服务器可用localecho打开本地回显敲的字符会显示在本地term设置终端类型 ansi/vt100/vt52/vtntescape设置转义字符logfile指定日志文件必须位于本地计算机logging打开日志记录bsasdel把 BACKSPACE 设为删除键crlf设置新的行模式ENTER 发送 0x0D、0x0Adelasbs把 DELETE 设为退格键mode设置 console 或 stream 操作模式telnet set localecho telnet set term vt100 telnet set escape ^] telnet set logfile C:\temp\telnet.log telnet set logging telnet set bsasdel telnet set mode console逻辑说明这些命令按顺序打开本地回显、把终端切成 vt100、把转义字符改成 ^]、指定日志文件、开始记录、把 Backspace 设为删除键、切换 console 模式。参数说明localecho 是最常用的一个连上老设备后屏幕上什么都不显示先 set localecho 再看。logfile 必须写本地路径如果没设 logfile 就执行 set logging会直接报错。bsasdel 和 delasbs 正好是一对相反映射一个把 BACKSPACE 当删除键一个把 DELETE 当退格键。term 选项影响远程设备怎么解释你的终端控制序列SSH 连网络设备时通常选 vt100选错会出现换行异常或方向键乱码。4.2 send 命令ao、ayt、esc、ip、synch 都是带外指令send 命令是 Telnet 协议里真正往远端发的会话控制指令语法是 send [\RemoteServer] [ao] [ayt] [esc] [ip] [synch] [?]。它和 set 的差异在于set 改本地行为send 是主动往远端发控制序列。telnet send ayt telnet send ao telnet send ip telnet send synch telnet send esc逻辑说明ayt 发送 “Are you there?” 探测远端是否响应ao 终止输出适合远端在刷屏时用ip 中断当前进程synch 执行同步操作esc 发送当前转义字符。参数说明在对接老式设备时这些命令比 CtrlC 更接近协议层面的控制。比如对方持续打印日志刷屏send ao 能中止输出而不杀掉会话怀疑远端卡死先 send ayt看它回不回话再决定要不要断开。esc 发送的是当前会话的转义字符通常默认就是 CTRL]如果你通过 set escape 改了字符这里的 esc 会发新的字符。4.3 unset、-e 与 codeset撤销选项和字符集对齐和 set 配套的是 unset用来关闭上一次设置的选项语法是 unset [Option]。比如 set localecho 打开回显unset localecho 就能关掉。另有一个快捷键写法 -e Character 直接设置转义字符。telnet unset localecho telnet -e ^]逻辑说明第一条把本地回显关掉第二条把转义字符设为 ^]。-e 的字符可以是单个字符也可以是 CTRL 键和字符的组合设置控制键组合时需要在键入字符时按住 CTRL。参数说明非英文版本的 Telnet 客户端还有 codeset 选项可以把当前代码集设置成 Shift JIS、Japanese EUC、JIS Kanji 等日文编码。PDF 里特别提醒要在远程计算机上设置相同的代码集否则日文终端显示会乱码。这个细节对处理日文系统的老设备还有用我一般在连接前先和对方确认终端编码而不是等到乱码出现再猜。5. telnet 排查避坑七个常见问题的现象、原因与解决5.1 客户端连接阶段的四个坑坑 1telnet 不是内部或外部命令。现象cmd 里敲 telnet系统直接提示“telnet 不是内部或外部命令”。原因Windows 10/11 默认没启用 Telnet Client 功能命令行里没有这个可执行文件。解决在“启用或关闭 Windows 功能”里勾选 Telnet Client或者用 dism /online /enable-feature /featurename:TelnetClient 启用启用后重开命令行窗口。坑 2看起来闪退或黑屏。现象telnet 10.0.0.5 80屏幕黑一下马上退出。原因这个报错信息很有迷惑性端口如果完全不通会显示“无法打开到主机的连接”如果黑屏一闪反而是 TCP 连接已经建立只是对方按 HTTP 协议回了内容、然后立即关闭。解决别急着判断“连不上”先确认你连的 80 端口跑的是 HTTP不是 telnet 协议想优雅退出就 CTRL] 进入命令模式再 quit。坑 3输入字符不显示。现象连上远程设备后键盘敲进去什么都没显示本地也没有回显。原因localecho 没开本地回显被关闭远程服务也不会把你的输入原样弹回来。解决CTRL] 退出会话执行 set localecho再按 ENTER 回去。如果只需要看远程命令输出保持关闭反而更干净按需求调就行。坑 4删除键变乱码。现象按 Backspace 想删前面输入的字符屏幕上出现 ^H 而不是删除效果。原因终端选项里 BACKSPACE 没有被映射成删除键字节流被终端解释成别的控制字符。解决在 telnet 下执行 set bsasdel把 BACKSPACE 设为删除键。反过来如果想把 DELETE 当退格用用 delasbs。5.2 服务端管理与配置阶段的三个坑坑 5日志开不起来。现象执行 set logging 时提示错误信息日志没有记录。原因set logfile 没先执行日志文件没指定文档原话是“如果没有设置日志文件将会出现错误信息”。解决先 set logfile C:\temp\telnet.log再 set logging。日志文件必须写在本地计算机网络路径不认。坑 6tlntadmn 操作被拒。现象执行 tlntadmn -k all 或 tlntadmn config 时提示拒绝访问或者参数配置不生效。原因命令行没有管理员权限或者参数值超出了文档约束比如 port 要求小于 1024 的整数maxfail 要求小于 100。解决右键“以管理员身份运行”打开命令提示符配置前先不带参数执行 tlntadmn 看当前值再逐个参数改。遇到 port 想用高端口的直接换方案Telnet Server 的端口限制是写在命令约束里的。坑 7maxconn 和 timeout 配置太激进。现象活动会话一多新连接直接被拒或者用户操作稍微停一会儿就被踢下线。原因maxconn 设置过小timeout 设置过短服务端把正常停留也当成了空闲。解决按实际并发数调整 tlntadmn config maxconn 的值比如测试环境 10、生产环境 50timeout 用 00:30:00 这类更宽松的值。空闲超时是双刃剑既要防挂死会话也要给用户留操作思考时间。6. 把 telnet 命令固化成排障习惯三种自动化探测技巧6.1 单端口探测echo q 交给管道交互模式下还要手动 quit自动化里可以把 q 通过管道喂给 telnet连接建立后立刻退出。我一般写成echo off echo q | telnet 192.168.1.20 8080逻辑说明echo q 输出的字符进入 telnet 的标准输入telnet 连上后收到 q 就退出如果端口不通会显示无法打开的提示。参数说明把 IP 和端口换成自己要探测的目标。这样写完之后“无法打开到主机的连接”和空输出之间的差异就是端口通不通的判据。6.2 批量端口探测脚本需要同时验证一个主机的多个端口时for 循环比手动敲快得多echo off set HOST192.168.1.20 for %%P in (22 23 80 443 3389) do ( echo q | telnet %HOST% %%P )逻辑说明依次对 22、23、80、443、3389 发起 telnet 连接并立即退出一体化验证五个端口。参数说明HOST 换成目标机器端口列表按需改。注意 telnet 的退出码并不总是可靠判断依据还是屏幕输出所以要保留窗口输出而不是靠 ERRORLEVEL 判断。6.3 交叉验证Test-NetConnection 补位telnet 只能做 TCP 握手验证抓不到 UDP也读不到 Banner 后的完整协议信息。当怀疑 telnet 结果有玄学成分我用 PowerShell 交叉验证Test-NetConnection 192.168.1.20 -Port 8080逻辑说明返回里直接给出 TcpTestSucceeded 的布尔值比人眼判断 telnet 输出更省事。从那以后我每改一次防火墙规则或安全组都会强制走一遍“telnet 探测 Test-NetConnection 交叉验证”确认端口状态从命令输出到服务日志都对得上再合入变更。希望帮到你。本文还有配套的精品资源点击获取