Linux上解决telnet失败问题

现象描述

在设备A执行telnetd,ps查看telnetd运行中。

在另一台设备B上telnet到这台设备上,报Connection closed by foreign host

在设备A上再查看telnetd进程状态,发现进程已经消失,说明在登录的过程中telnetd进程崩溃。

使用gdb挂载运行和attach运行,也没有任何线索。

查看telnetd命令,telnetd -F让其在前台运行。

发现在登录的瞬间会报"telnetd: can't find free pty"错误。

telnet登录失败的原因也就是这个。

解决问题

"can't find free pty" 错误,是由于系统无法分配伪终端(PTY)设备导致的。

第一步排查kernel是否支持,是否打开了PTY的相关配置。

复制代码
CONFIG_UNIX98_PTYS=y
CONFIG_LEGACY_PTYS=y
CONFIG_LEGACY_PTY_COUNT=256

发现正常。

第二步排查PTY设备数量,这个正常只会在登录设备过多的时候会被限制。

复制代码
cat /proc/sys/kernel/pty/max # 查看当前系统PTY设备数量限制
cat /proc/sys/kernel/pty/nr  # 当前已使用的PTY数量

发现也正常,数量剩余很多。

第三步检查/dev/pts文件系统

mount | grep pts

发现没有挂载信息,查看/dev/pts,甚至没有这个目录,那问题就在这里。

自己手动创建目录挂载。

再运行telnetd,检查telnet是否能登录

登录正常,问题解决。

telnetd -F -l /bin/sh &运行,可以免密root登录

相关推荐
QT 小鲜肉1 小时前
【QT/C++】Qt样式设置之CSS知识(系统性概括)
linux·开发语言·css·c++·笔记·qt
Elias不吃糖1 小时前
NebulaChat 框架学习笔记:深入理解 Reactor 与多线程同步机制
linux·c++·笔记·多线程
洋哥网络科技1 小时前
centos 7.9搭建安装confluence7
linux·centos·知识图谱
LCG元2 小时前
Docker 入门实战:用10个案例带你玩转容器化
linux
MMME~2 小时前
SELinux
linux·rhce
cccccc语言我来了2 小时前
深入理解 Linux(7) 命令与动态库:从文件操作到程序链接的实践指南
android·linux·运维
Lynnxiaowen2 小时前
今天我们开始学习Linux自动化运维Ansible基础
linux·运维·学习·自动化·云计算·ansible
NiKo_W2 小时前
Linux 传输层协议
linux·运维·网络·tcp协议·传输层·udp协议
夜月yeyue2 小时前
Linux 中断处理机制详解:上下半部、内核线程与中断线程化
linux·运维·单片机·嵌入式硬件·uboot·bootloard
浪漫血液&3 小时前
Linux基础指令(简易版)
linux·服务器