Linux telnet 服务器不使用 telnet 协议握手

Linux telnet 服务器不使用 telnet 协议握手

我们正在尝试使用简单的终端程序连接到 Linux telnet 服务;我怀疑服务器设置为默认的 VT-100,并且 telnet 服务器发送控制握手序列,期望终端以其支持的选项进行回复,然后挂起等待终端回复。

在此处输入图片描述 (图片质量较差,敬请谅解)

不幸的是,终端只是裸通信程序,不知道 telnet 协议。

有没有什么办法可以告诉telnet服务器(例如通过设置特定的终端类型)不要启动远程终端属性的识别,而是直接进行通信?

编辑:

请编辑问题并提供更多详细信息:您使用什么终端,它是什么“裸通信”程序?

通信程序打开与 Linux PC 的 23 端口的 TCP 连接,然后发送键盘上键入的字符并将接收到的字符显示在屏幕上,而无需进行任何字符处理。

您是否可以在服务器上运行 netcat 来代替(或同时运行)telnetd,并使用它来调试通信本身是否正常工作

我不确定,因为我无法控制这两台机器。但运行终端的机器能够连接到 Linux 机器,并且 Linux 机器能够发送 telnet 协议控制字符(您可以在图片上看到 - 白色字符为 0xff - telnet 选项的起始标记)是 100% 的事实吗?我不能 100% 肯定,因为我没有 Wireshark 日志,但似乎通信工作正常,并且它是不通过 telnet 协议握手的 telnet 服务器。

连接后,您是否要登录,或者是否要执行其他操作?您可以在终端上使用更安全的方法吗,例如 ssh?

是的,我希望 telnet 服务器显示“login: ”以请求登录系统。Linux 机器上的 telnet 服务可以运行,因为可以使用 telnet 客户端从第三台机器登录 - 但此 telnet 客户端知道 telnet 协议并对其做出响应。在上述情况下,temrinal 程序对 telnet 控制代码/协议一无所知,并将它们显示为字符而无需采取任何进一步的操作(根据 telnet 协议做出响应)。

答案1

首先,telnet 协商与终端类型无关。(实际上,终端类型是决定在 telnet 协商期间。)因此您不能通过更改后者来禁用前者。

你怎么禁用它取决于服务器上特定的 telnetd 实现。(我数了一下,仅在 Linux 上就有 5 个不同的 in.telnetd,其他操作系统都有自己的。)

有时您可以在服务配置中使用 telnetd 命令行选项(即在 systemd .service 文件或 /etc/inetd 中)。

如果一切都失败了,您可以编译自己的修补过的 telnetd 版本;所有 Linux 发行版都有办法根据官方配方重建软件包(dpkg-buildpackage、makepkg……)

相关内容