在 Linux ARM 架构中,Telnet 主要通过安装 telnet-server 或 telnetd 实现远程终端访问,虽然其明文传输特性在生产环境下被 SSH 取代,但在嵌入式开发阶段仍是快速调试的核心工具。
Linux ARM 架构下 Telnet 服务端如何安装配置
在 ARM 架构的嵌入式 Linux 系统中,由于资源受限,很多设备并不预装完整的桌面环境或复杂的远程管理工具,Telnet 凭借极低的资源占用,成为开发者在开发板启动初期、网络协议栈调试阶段的首选。
基于 BusyBox 的快速部署
大多数 ARM 嵌入式系统(如基于 Yocto 或 Buildroot 构建的系统)使用 BusyBox 提供基础指令,BusyBox 内置了 telnetd 服务,无需额外安装大型软件包。
- 启动服务:在终端输入
telnetd即可启动守护进程。 - 指定端口:若需更改默认的 23 端口,可使用
telnetd -p [端口号]。 - 权限验证:BusyBox 的 telnetd 通常依赖系统的
/etc/passwd文件进行用户认证。
基于 Debian/Ubuntu ARM 版本的标准安装
对于运行在树莓派(Raspberry Pi)或 RK3588 等高性能 ARM 板卡上的完整发行版,安装流程更为标准化。
- 安装服务端:执行
sudo apt-get update && sudo apt-get install telnetd。 - 管理服务:使用
sudo systemctl start inetutils-telnetd启动服务。 - 设置自启:执行
sudo systemctl enable inetutils-telnetd确保设备重启后服务自动运行。
配置文件关键路径
在 ARM Linux 中,Telnet 的行为通常由以下文件控制:
/etc/inetd.conf:如果使用 inetd 管理,需在此文件中配置telnet stream tcp nowait root /usr/sbin/telnetd。/etc/securetty:定义允许 root 用户通过 Telnet 登录的终端设备。
ARM Linux Telnet 和 SSH 哪个更安全
在选择远程管理协议时,安全性是核心考量,行业共识认为,Telnet 仅适用于隔离的内网开发环境,而 SSH 是所有公网及生产环境的唯一选择。
传输机制对比
Telnet 与 SSH 的本质区别在于数据加密方式,Telnet 将所有数据(包括用户名和密码)以明文形式在网络中传输,任何处于中间节点的抓包工具(如 Wireshark)都能直接读取登录凭据。
综合特性对比表
| 特性 | Telnet | SSH (Secure Shell) |
|---|---|---|
| 端口 | 默认 23 | 默认 22 |
| 加密 | 无加密(明文) | 强加密(对称/非对称加密) |
| 资源占用 | 极低,适合低端 ARM 芯片 | 较高,需计算资源处理密钥 |
| 身份验证 | 简单密码验证 | 密码、公钥、双因子验证 |
| 适用场景 | 内部调试、极低功耗设备 | 生产环境、公网远程管理 |
性能损耗分析
业内专家指出,在主频低于 200MHz 的极低端 ARM 核心上,SSH 的握手过程和加密计算会导致明显的连接延迟,在这种极端场景下,开发者会暂时开启 Telnet 以提高操作响应速度,但必须在防火墙层面限制访问 IP。
嵌入式 ARM 开发板 telnet 无法连接怎么排查
在实际操作中,连接失败是最高频的问题,排查过程应遵循从物理层到应用层的金字塔逻辑。
网络连通性验证
首先确认客户端与 ARM 开发板处于同一网段且物理链路畅通。
- Ping 测试:在 PC 端执行
ping [ARM设备IP],若不通,检查网线、交换机或虚拟机的网络模式(桥接模式为首选)。 - 路由检查:检查 ARM 端的
route -n,确保默认网关配置正确。
端口监听状态确认
即使服务启动,端口也可能未正常监听,在 ARM 端执行以下命令:
netstat -tuln | grep 23- 结果分析:若未出现
LISTEN状态的 23 端口,说明telnetd进程未运行或启动失败,此时应检查/var/log/messages或dmesg查看报错信息。
防火墙与访问控制
ARM Linux 默认可能开启了 iptables 或 nftables 拦截外部请求。
- 临时关闭防火墙:执行
sudo ufw disable或sudo iptables -F。 - 开放特定端口:使用
sudo iptables -A INPUT -p tcp --dport 23 -j ACCEPT仅允许 Telnet 流量进入。
登录权限限制
很多 ARM 系统默认禁止 root 用户直接通过 Telnet 登录。
- 检查 /etc/passwd:确认 root 账户是否设有密码。
- 修改权限:在
/etc/pam.d/remote中检查是否有限制远程登录的策略。
ARM 平台 Telnet 端口占用查询与管理
在复杂的 ARM 开发环境中,多个服务可能竞争端口,导致 Telnet 无法启动。
精准定位占用进程
当启动 telnetd 提示 Address already in use 时,需快速定位冲突进程。
- 使用 lsof 命令:
sudo lsof -i :23。 - 使用 netstat 命令:
sudo netstat -nlp | grep :23。 - 操作路径:通过上述命令获取 PID $rightarrow$ 执行
$rightarrow$ 重新启动kill -9 [PID]
telnetd。
端口转发场景应用
在某些 ARM 设备处于内网且无法直接访问时,可通过 SSH 隧道进行端口转发,将远程 ARM 的 23 端口映射到本地。
- 命令示例:
ssh -L 2323:localhost:23 user@gateway_ip。 - 访问方式:此时在本地 PC 访问
telnet localhost 2323即可触达 ARM 设备。
实际操作流程总结
在 ARM Linux 上部署 Telnet 的标准路径为:确认网络通畅 $rightarrow$ 安装/启动 telnetd $rightarrow$ 配置防火墙放行 $rightarrow$ 验证端口监听 $rightarrow$ 客户端连接测试。
对于资源极度匮乏的 ARM 芯片,优先选择 BusyBox 方案;对于需要高稳定性的系统,建议在配置好 Telnet 进行初步调试后,迅速迁移至 SSH。
Telnet 在 ARM Linux 中扮演的是“临时脚手架”的角色,其核心价值在于极简的部署和极低的开销,但在任何涉及数据的正式环境下,必须使用 SSH 替代以确保系统安全。
Linux ARM Telnet 相关问题 Q&A
ARM Linux Telnet 连接时出现 Connection refused 是什么原因?
这通常意味着目标 ARM 设备虽然网络可达,但没有进程在监听 23 端口,请检查 telnetd 服务是否已启动,或者防火墙是否拦截了该端口的入站流量。
如何在 ARM 嵌入式设备上彻底禁用 Telnet 以增强安全性?
首先使用 killall telnetd 停止运行中的进程,然后删除 /etc/inetd.conf 中相关的 telnet 配置行,最后通过 iptables -A INPUT -p tcp --dport 23 -j DROP 在内核层面封死 23 端口。
ARM 架构下 Telnet 登录后出现乱码如何解决?
乱码通常由客户端与服务端终端类型(TERM 变量)不匹配引起,在 ARM 端执行 export TERM=vt100 或 export TERM=xterm,并确保客户端软件(如 Putty 或 SecureCRT)的编码设置为 UTF-8。
首发原创文章,作者:世雄 - 原生数据库架构专家,如若转载,请注明出处:https://idctop.com/article/494165.html



