如何开启telnet服务:多系统操作与安全边界
"如何开启telnet服务"这件事在不同操作系统上路径完全不同:Windows10/11可通过"启用或关闭Windows功能"勾选TelnetClient或用DISM命令一键开启客户端,但微软自WindowsVista起已不再内置TelnetServer组件;Linux上需先安装telnet-server或telnetd包,再通过systemctl或xinetd监听23端口。该协议由IETF于1983年发布的RFC854定义,所有流量包括登录口令均为明文传输,仅适合隔离测试环境、老旧网络设备调试或本地回环验证,不建议在任何可被外部网络访问的服务器上长期开启。
Telnet客户端不等于Telnet服务端。
Windows系统如何开启telnet服务
在Windows上,按下Win+R输入optionalfeatures回车,在弹出的"Windows功能"窗口中勾选"TelnetClient"确定即可,重启命令行后直接输入telnet加目标IP和端口就能建立连接。如果脚本或批量部署需要静默开启,以管理员身份运行CMD,执行dism/online/Enable-Feature/FeatureName:TelnetClient/All,无需重启系统。这个操作开启的只是你本机作为客户端去连接别人;要让别人通过telnet连到你的Windows机器,Windows7之后的版本原生已不提供该服务,需借助第三方工具或在虚拟机中运行XP/Server2003时代的系统,这条路本身就带有明显的兼容性和安全隐患。
Linux系统如何开启telnet服务
在RHEL、CentOS、Fedora这类基于systemd的发行版上,先以root身份执行yuminstalltelnet-serverxinetd(CentOS8及之后改用dnfinstalltelnet-server),安装完成后执行systemctlenable--nowtelnet.socket,这条命令会同时设置开机自启并立即启动23端口监听。你可以用ss-tlnp|grep23验证端口是否真的在监听。防火墙层面要放行23端口:firewall-cmd--permanent--add-port=23/tcp,再执行firewall-cmd--reload生效。
Debian、Ubuntu系走的是另一套路径,安装openbsd-inetd或xinetd配合telnetd包,在/etc/inetd.conf中找到telnet一行去掉行首注释,再执行systemctlrestartopenbsd-inetd或systemctlrestartxinetd即可。两类系统的命令差异如下表:
| 维度 | RHEL/CentOS7+ | Debian/Ubuntu |
|---|---|---|
| 安装命令 | yuminstalltelnet-server | aptinstalltelnetdopenbsd-inetd |
| 启动方式 | systemctlenable--nowtelnet.socket | 编辑inetd.conf后重启inetd |
| 端口放行 | firewall-cmd放行23/tcp | ufwallow23/tcp |
| 服务托管 | systemdsocket单元 | inetd超级服务器托管 |
开启telnet服务的安全边界与替代
该服务的适用边界非常具体:仅在物理隔离的实验室网络、离线调试专用设备、或必须用老式网络设备(如早期交换机、工业串口服务器)且该设备不支持SSH的场景下临时开启。任何暴露在公网、办公网边界、云服务器安全组中的23端口都会在数小时内被自动化扫描器探测到,随后出现字典爆破、凭据窃取等行为。协议层面RFC854并未规定任何加密或认证机制,登录名、密码、传输数据全部以明文流经网络,抓包即可完整还原。
替代方案首选SSH,对应IETF在RFC4251中定义的SecureShell协议族,默认监听22端口,传输层加密且支持密钥认证。在需要调试老旧设备但又不希望长期开放Telnet的场景下,可以使用SSH端口转发或socat做一次性隧道,用完即关,而不是把23端口常驻暴露。
开启后检查两件事:一是执行ss-tlnp|grep:23确认监听地址是127.0.0.1而非0.0.0.0,若默认绑定到所有网卡,需在配置中限制来源IP;二是查看/etc/securetty文件,默认配置下root账号通过telnet登录会被拒绝,这是编译进pam_securetty的保护机制,不要为了图方便把tty条目全部加进去。
用完立刻systemctldisable--nowtelnet.socket或在/etc/inetd.conf注释掉telnet行并重启inetd,再用ss-tlnp|grep23确认端口已消失,这一步比"记着关掉"更可靠。
