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登录

相关推荐
ONE_SIX_MIX1 分钟前
ubuntu 24.04 用rdp连接,桌面黑屏问题,解决
linux·运维·ubuntu
龙飞052 分钟前
Systemd -systemctl - journalctl 速查表:服务管理 + 日志排障
linux·运维·前端·chrome·systemctl·journalctl
*小海豚*3 分钟前
在linux服务器上DNS正常,但是java应用调用第三方解析域名报错
java·linux·服务器
June`3 分钟前
muduo项目排查错误+测试
linux·c++·github·muduo网络库
消失的旧时光-194319 分钟前
Linux 编辑器入门:nano 与 vim 的区别与选择指南
linux·运维·服务器
晓131329 分钟前
第七章 【C语言篇:文件】 文件全面解析
linux·c语言·开发语言
唐装鼠38 分钟前
Linux 下 malloc 内存分配机制详解
linux·malloc
予枫的编程笔记39 分钟前
【Linux入门篇】Linux运维必学:Vim核心操作详解,告别编辑器依赖
linux·人工智能·linux运维·vim操作教程·程序员工具·编辑器技巧·新手学vim
17(无规则自律)1 小时前
深入浅出 Linux 内核模块,写一个内核版的 Hello World
linux·arm开发·嵌入式硬件
中二病码农不会遇见C++学姐1 小时前
Linux下的.run文件
linux