仓库源文站点原文

telnet的不完整总结

telnet 的简介

Telnet (Telecommunication Network) 电信网络

telnet 是最早的互联网协议之一, telnet ftp 的出现甚至早于 tcp/ip 。 telnet ftp email 最早都出现在 ARPANET , telnet ftp 差不多同时出现, 从维基百科的词条来看 telnet 比 ftp 稍微早一点出现

ARPANET

主要互联网协议和应用出现的时间顺序

telnet 主要用于管理远程服务器和bbs。 通常 telnet 连接成功后启动的是 login 程序。 bbs很早就出现了,但早期的bbs并不使用 internet ,使用 telnet 的 bbs 要到 1990 才出现。 早期的bbs一般叫做 拨号式bbs,拨号式bbs 使用的是 FidoNet。

telnet 的使用

客户端

客户端的连接命令

telnet 地址
telnet 地址 端口
telnets 地址
telnets 地址 端口

默认端口

现在还活跃的 telnet 服务 https://www.telnet.org/htm/places.htm

https://www.telnet.org/ 这个网址里有对 telnet 详细的描述

服务端

使用 inetd

使用单独的进程

<!-- 这是安装服务端 apt install -y telnetd 安装完后 通过 find 找到 find / -name telnetd 通过 man 查看文档 man telnetd 这是安装客户端 apt install -y telnet 还有一个这样的程序?这个才是 telnetd 的主程序? /usr/sbin/in.telnetd 还有一个这样的程序?这个程序是跟随 inetd 安装的 /usr/sbin/tcpd 在 inetd 默认的配置中 telnetd 是通过这个程序启动的 还有一个这样的程序?这个就是默认情况下,在telnetd里连接成功后的登录程序,这个程序是跟随 telnetd 安装的 /usr/lib/telnetlogin 从文档来看 安装完 telnetd 和 inetd 后 只要改好配置文件 /etc/inetd.conf 大概就是把配置写成这个样子 telnet stream tcp nowait telnetd /usr/sbin/tcpd /usr/sbin/in.telnetd 重启 inetd 就可以成功开启 telnetd 服务了 -->

telnet 的原理

<!-- https://github.com/mirror/busybox/blob/master/networking/telnet.c https://github.com/mirror/busybox/blob/master/networking/telnetd.c https://docs.python.org/zh-cn/3/library/telnetlib.html https://github.com/python/cpython/tree/3.12/Lib/telnetlib.py 这个文件似乎能直接左右 telnet 客户端使用 python telnetlib.py [-d] ... [host [port]] https://www.cnblogs.com/mrlayfolk/p/15154813.html https://github.com/search?q=telnet+language%3AC&type=repositories&l=PHP&s=stars&o=desc https://github.com/fijiwebdesign/php-telnet https://github.com/diotteo/TelnetClient.php python已经放弃了 telnet https://peps.python.org/pep-0594/#telnetlib cgi smtpd 也都被抛弃了。。。 https://packages.debian.org/search?keywords=telnet https://www.gnu.org/software/inetutils -->

其他远程管理工具

telnet 是最古老的,然后是 rlogin , 然后是 ssh

rlogin

rexec/rlogin/rsh 都属于 rsh-server 包,又或者叫做 Berkeley r-commands

包含了这几个命令

在 gnu 的 inetutils 包里也有包含 rlogin 命令

ssh

其它

如何实现一个 telnet

服务端

客户端

<!-- c 如何实现一个交互式的命令行? php 如何实现一个交互式的命令行? python 如何实现一个交互式的命令行? 个人感觉 python 的 api 不稳定,总是有变动, c 不能方便地跨平台编译而且处理字符串也很麻烦, php 的多进程不好用, 没想到在 busybox 里也有有一个 telnet 和 telnetd 虽然windows版里没有, 但登录后只能启动shell,目测 telnetd 默认启动的是 /bin/login 指定了 -l 参数,就可以启动其它程序,但似乎这个又不需要登录了 如果 -l 的程序退出了,连接也会跟着关闭 所以这两条命令效果是一样的 telnetd telnetd -l /bin/login 猜测 ssh telnet 等登录方式都是调用 /bin/login telnet telehack.com 直接用浏览器打开也可以 telnet 似乎也可以作为 ftp 的客户端? https://blog.csdn.net/nowhere_/article/details/44877439 -->