Telnet是一款年代久远的网络协议,不少人只在课本里见过。它运行在TCP/IP应用层,默认使用23端口,功能简单,用来从一台计算机远程登录另一台设备,直接在远端执行命令。早年网络设备、Unix服务器、BBS站点,都依靠它完成远程管理。那个阶段互联网还处于试验阶段,加密问题基本没人重视。
它的工作原理并不复杂。客户端与服务端建立TCP连接之后,双方传输的全部是明文字符。你每输入一个字母,就单独发送到服务端;服务端返回的内容,会直接展示在本地屏幕。不存在加密、压缩机制,握手认证流程也很简单。账号和密码都以明文在网络中传输,抓包工具就能完整读取内容。所以公网环境里,几乎不会再用它做正式远程登录,SSH基本完全替代了Telnet。SSH同样支持远程登录,全程流量加密,还附带端口转发、文件传输能力,安全层面差距很大。

不过Telnet并没有彻底淘汰,现在更多当成简易调试工具。运维和开发人员使用它,大多不是登录设备,而是检测端口连通状态。比如怀疑服务器3306端口未开放,直接执行telnet 192.168.1.100 3306,连接成功会出现闪烁光标或者服务端欢迎文字;连接失败则返回连接拒绝或者超时提示。这种方式比安装专门端口扫描工具更快捷,Windows、Linux、macOS平台都自带可用。
它的操作方式分平台来看。Linux和macOS终端可直接执行telnet命令,系统一般预装该工具。Windows需要手动开启,系统默认不带Telnet客户端。打开控制面板,进入程序和功能,选择启用或关闭Windows功能,在列表勾选Telnet客户端,确认等待安装完成。安装完毕后打开命令提示符或者PowerShell,输入telnet回车,出现Microsoft Telnet>提示符就代表可用。
基础语法为telnet 主机名或IP 端口号,端口省略时默认使用23端口。像telnet 192.168.1.1会尝试连接路由器23端口,很多老旧路由器默认开启这项远程管理服务。成功连接后,输入的命令直接在远端设备运行,操作效果等同于本地操作那台机器。退出操作按Ctrl+],再输入quit回车。部分服务连接成功后直接弹出登录界面,输入账号密码就能进入命令行。
用Telnet排查HTTP服务也很普遍。执行telnet example.com 80,连接成功输入GET / HTTP/1.0,连续两次回车。就能获取服务器返回的HTTP响应头,包含状态码、服务器标识、内容长度等信息。排查网站访问异常的时候很实用,可以直接读取服务器原始返回数据,不只是浏览器展示的错误页面。测试SMTP邮件服务操作类似,执行telnet smtp.example.com 25,依照SMTP交互流程依次输入HELO、MAIL FROM、RCPT TO,可以一步步观察邮件服务器的返回结果。
使用Telnet有几个需要留意的问题。第一,所有传输内容都是明文,密码同样不加密。公网环境登录设备,相当于把账号密码暴露在传输链路中。第二,新版操作系统、网络设备默认关闭Telnet服务,优先启用SSH,连接失败不一定是命令输入错误,有可能服务本身未开启。第三,Windows提示“telnet 不是内部或外部命令”,就是客户端没有安装,按照前面步骤开启即可。第四,防火墙会拦截23端口,云服务器如果安全组没有放行对应端口,长时间连接也会超时。
Telnet现在的定位就是轻量级网络调试工具,快速验证端口连通,读取服务原始响应。内网隔离环境里偶尔还会用它远程管理,但公网传输或者涉及敏感信息的场景,一律改用SSH。掌握它的用法,排查网络故障可以节省不少时间,但不要作为日常远程登录工具。