一、Telnet协议概述
Telnet是一种古老的远程登录协议,通过TCP端口23连接远程主机。在Linux服务器管理中,Telnet曾是最常用的远程管理方式之一。
核心特点:
– 明文传输:所有数据(包括用户名和密码)以明文形式传输
– 简单易用:无需复杂配置即可使用
– 跨平台:客户端支持Windows、macOS、Linux等多种系统
2026年的使用现状:
– Telnet因安全问题已逐渐被SSH取代
– 在某些特定场景(如路由器管理console、内网调试)仍有使用
– 学习Telnet有助于理解网络协议原理
二、Telnet客户端安装
2.1 Ubuntu/Debian系统
# 安装Telnet客户端
sudo apt update
sudo apt install telnet -y
# 验证安装
telnet --version
2.2 CentOS/RHEL系统
# 安装Telnet客户端
sudo yum install telnet -y
# 或使用dnf
sudo dnf install telnet -y
2.3 Windows系统
Windows 10/11内置Telnet客户端,需要手动启用:
# 以管理员身份运行PowerShell
dism /online /enable-feature /featurename:TelnetClient
或通过”控制面板” → “程序” → “启用或关闭Windows功能” → 勾选”Telnet客户端”。
2.4 macOS系统
macOS默认已安装Telnet客户端,可直接使用:
# 验证
which telnet
telnet localhost
三、Telnet服务器安装与配置
3.1 安装Telnet服务器(Ubuntu)
# 安装telnetd
sudo apt install telnetd -y
# 检查服务状态
sudo systemctl status inetd
# 启动服务
sudo systemctl start inetd
sudo systemctl enable inetd
3.2 安装Telnet服务器(CentOS)
# 安装xinetd
sudo yum install xinetd telnet-server -y
# 启动服务
sudo systemctl enable xinetd
sudo systemctl start xinetd
# 配置防火墙放行
sudo firewall-cmd --permanent --add-port=23/tcp
sudo firewall-cmd --reload
3.3 配置Telnet服务器
编辑配置文件 /etc/inetd.conf(Ubuntu)或 /etc/xinetd.d/telnet(CentOS):
# Ubuntu - /etc/inetd.conf
telnet stream tcp nowait root /usr/sbin/telnetd telnetd
# CentOS - /etc/xinetd.d/telnet
service telnet
{
disable = no
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd
log_on_failure += USERID
}
四、连接远程Linux服务器
4.1 基本连接命令
# 连接到远程服务器
telnet 192.168.1.100
# 指定端口连接(默认23)
telnet 192.168.1.100 23
# 使用域名连接
telnet example.com
4.2 连接交互过程
Trying 192.168.1.100...
Connected to 192.168.1.100.
Escape character is '^]'.
Ubuntu 22.04 LTS
login: username
Password:
Welcome to Ubuntu 22.04 LTS (GNU/Linux 5.15.0-52-generic x86_64)
* Documentation: https://help.ubuntu.com/
* Management: https://landscape.canonical.com/
* Support: https://ubuntu.com/advantage
Last login: Mon May 11 06:00:00 2026 from 192.168.1.10
username@server:~$
4.3 Telnet子命令
在Telnet会话中可使用以下子命令:
| 命令 | 简写 | 说明 |
|---|---|---|
open hostname |
o |
连接到指定主机 |
close |
c |
关闭当前连接 |
quit |
q |
退出Telnet |
status |
– | 显示连接状态 |
set |
– | 设置会话参数 |
unset |
– | 取消设置 |
z |
– | 暂停Telnet(按回车继续) |
? |
– | 显示帮助 |
五、安全配置与加固
5.1 关键安全���告
⚠️ 重要提醒:
– Telnet传输数据为明文,密码和敏感信息可被窃听
– 强烈建议仅在内网或可信网络环境使用
– 生产环境优先使用SSH协议
5.2 限制IP访问
# Ubuntu - 使用/etc/hosts.deny和/etc/hosts.allow
# 禁止所有访问
echo "ALL: ALL" | sudo tee /etc/hosts.deny
# 仅允许特定IP
echo "in.telnetd: 192.168.1.0/255.255.255.0" | sudo tee /etc/hosts.allow
5.3 使用TCP Wrapper
编辑 /etc/hosts.allow:
# 仅允许192.168.1.0/24网段访问
in.telnetd: 192.168.1.
# 拒绝其他所有
in.telnetd: ALL: deny
5.4 防火墙限制
# iptables限制来源IP
sudo iptables -A INPUT -p tcp --dport 23 -s 192.168.1.0/24 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 23 -j DROP
5.5 替代方案:SSH
强烈建议使用SSH代替Telnet:
# 安装SSH客户端
sudo apt install openssh-client -y
# 连接到远程服务器
ssh username@192.168.1.100
# 使用密钥登录
ssh -i ~/.ssh/id_rsa username@192.168.1.100
SSH优势:
– 加密传输
– 密钥认证
– 端口转发
– 文件传输(SFTP)
六、故障排查
6.1 连接被拒绝
# 1. 检查Telnet服务是否运行
sudo systemctl status inetd
# 2. 检查端口是否监听
sudo netstat -tlnp | grep 23
# 3. 检查防火墙
sudo iptables -L -n | grep 23
6.2 连接超时
# 1. 检查网络连通性
ping 192.168.1.100
# 2. 检查路由
traceroute 192.168.1.100
# 3. 检查TCP端口
nc -zv 192.168.1.100 23
6.3 登录失败
# 1. 检查用户名密码是否正确
# 2. 检查/etc/securetty是否包含pts/0等终端
# 3. 检查用户是否被禁用
sudo passwd -l username
6.4 乱码问题
Telnet可能显示乱码,通常是编码问题:
# 在Telnet中设置编码
set locale en_US.UTF-8
七、常见问题解答
Q1: Telnet和SSH有什么区别?
A: Telnet是明文传输,SSH是加密传输。SSH更安全,已成为主流远程管理方式。
Q2: Telnet可以传输文件吗?
A: 标准Telnet协议不支持文件传输,可使用FTP或SFTP代替。
Q3: 如何测试Telnet端口是否开放?
A: 使用telnet hostname 23或nc -zv hostname 23测试。
Q4: Telnet安全吗?
A: 不安全。仅在内网可信环境使用,生产环境使用SSH。
Q5: 为什么连接Telnet后无法输入?
A: 可能是终端设置问题,尝试按Enter键激活,或使用set locale设置编码。
八、总结
Telnet作为早期远程管理协议,虽然因安全问题逐渐被SSH取代,但在某些特定场景仍有使用价值。了解Telnet协议有助于:
- 学习网络协议基础
- 内网调试和网络诊断
- 管理和访问特定设备
核心要点:
– Telnet明文传输,存在安全风险
– 仅在内网可信环境使用
– 生产环境优先使用SSH
– 掌握故障排查方法
本文基于2026年Linux系统环境编写,具体命令可能因发行版不同而略有差异。