自学教程 从零学编程

Telnet 协议

一、Telnet 是什么

Telnet(Teletype Network,远程终端协议),是应用层协议,基于TCP,默认端口 23。
它的作用是:远程登录一台主机,像直接坐在服务器控制台一样操作主机。

Telnet 是早期互联网最主流的远程管理协议,诞生时间很早,设计之初互联网环境比较可信,没有任何加密机制。现在生产环境基本已经被SSH全面替代,学习它主要是理解历史协议、对比SSH,同时排查网络连通性。

二、Telnet 工作原理

Telnet 采用客户端/服务端模型:

  1. 服务端:在目标主机上运行 Telnet 服务,持续监听23端口;
  2. 客户端:本地打开Telnet客户端,主动发起TCP连接,连接服务器23端口;
  3. TCP连接建立成功后,双方建立Telnet会话;
  4. 客户端本地键盘输入的所有字符,通过TCP报文明文发送给服务端;服务端执行命令,将命令执行结果明文回传给客户端;
  5. 会话结束后关闭TCP连接。

核心特点:所有数据明文传输,包括账号、密码、命令、返回结果,网络抓包可以直接看到全部内容。

三、NVT(网络虚拟终端)

Telnet定义了 NVT(Network Virtual Terminal,网络虚拟终端),这是Telnet的核心设计。
不同操作系统终端格式、换行符、控制字符不一样。NVT做了一层统一抽象:

  • 客户端本地终端 → 转换成标准NVT格式,发给服务器;
  • 服务器收到NVT数据 → 转换成本机终端格式处理;
  • 返回数据同样做反向转换。

作用:屏蔽两端操作系统终端差异,让不同系统之间可以远程交互。

Telnet还内置了协商机制:客户端和服务端可以协商一些选项,比如是否开启回显、是否使用行模式等。

四、Telnet 简单交互流程

  1. 客户端发起TCP连接,连接服务器23端口;
  2. 双方协商Telnet选项(终端类型、回显等);
  3. 服务器返回登录提示;
  4. 客户端输入用户名、密码,明文发送;
  5. 认证成功,进入远程终端,可以输入操作系统命令;
  6. 服务器执行命令,返回结果;
  7. 输入退出命令,断开TCP连接,会话结束。

五、Telnet 的用途

1. 历史用途

远程登录服务器、网络设备(交换机、路由器)进行配置管理,当年运维标配。

2. 现在的主要用途

现代几乎不会用Telnet登录主机,但是Telnet客户端还经常用来测试端口连通性

telnet 192.168.1.100 80

这条命令不是去建立Telnet会话,只是尝试建立TCP连接,用来快速判断目标IP的端口是否开放。

注意:端口连通测试只是Telnet客户端的附带能力,并不是Telnet协议本身的功能。

六、Telnet 致命缺点

  1. 明文传输:账号密码裸奔,中间人抓包直接窃取凭证,安全风险极高;
  2. 本身没有身份校验的强机制;
  3. 容易遭受中间人攻击;
  4. 防火墙一般会封禁23端口。

结论:禁止在公网使用Telnet做远程管理。

七、Telnet vs SSH 对比表

协议端口加密认证方式安全性当前生产环境推荐
Telnet23❌ 明文账号密码极低不推荐,仅用于内网测试端口
SSH22✅ 全程加密密码/密钥认证高✅ 远程管理首选

八、小结

  1. Telnet 应用层TCP协议,默认23端口,用于远程终端登录;
  2. NVT虚拟终端用来屏蔽不同操作系统终端差异;
  3. 最大缺陷:全部通信明文传输,这也是被SSH淘汰的根本原因;
  4. 现在很少用来远程登录,但Telnet客户端常用来测试TCP端口连通性。

思考题:既然Telnet不安全,为什么很多网络设备还保留Telnet服务?

标签:

0 条笔记