前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Telnet必知必会

Telnet必知必会

作者头像
运维部落
发布2020-05-28 22:27:10
2K0
发布2020-05-28 22:27:10
举报
文章被收录于专栏:运维部落运维部落
  • Telnet 发展史
  • Telnet和SSH的区别(图)
  • Telnet使用
    • Telnet数据包分析
    • Telnet四种工作模式
    • telnet的工作过程
    • 为什么说telnet的效率不高?

Telnet 发展史

Telnet在计算机普及和网络全球化的过程中扮演了重要角色。

早期计算机并没有考虑网络互联的场景,在很长一段时间,计算机作为昂贵的资源只在军方和高校使用。因为能用的起电脑的国家和机构少之再少,因此,大家的通信也非常简单,简单的交换机甚至直连,更没有DNS的说法。同时也因为大家“知根知底”,因此早期的计算机的通信是使用明文通信,但随着计算机资源的逐渐普及,黑客,极客等各类角色出现,通信安全也逐渐被提上课题且日渐重要。Telnet的明文通信也逐渐被OPENSSH安全通信取代。但无论如何,Telnet在计算机发展史上的浓墨一笔值得被铭记。

Telnet协议是TCP/IP协议族中的一员,是Internet远程登陆服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的能力。在终端使用者的电脑上使用Telnet程序,用它连接到服务器。终端使用者可以在Telnet程序中输入命令,这些命令会在服务器上运行,就像直接在服务器的控制台上输入一样。可以在本地就能控制服务器。要开始一个telnet会话,必须输入用户名和密码来登录服务器。Telnet是常用的远程控制Web服务器的方法。

telnet命令通常用来远程登录。telnet程序是基于TELNET协议的远程登录客户端程序。Telnet协议是TCP/IP协议族中的一员,是Internet远程登陆服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的 能力。在终端使用者的电脑上使用telnet程序,用它连接到服务器。终端使用者可以在telnet程序中输入命令,这些命令会在服务器上运行,就像直接在服务器的控制台上输入一样。可以在本地就能控制服务器。要开始一个 telnet会话,必须输入用户名和密码来登录服务器。Telnet是常用的远程控制Web服务器的方法.

但是,telnet因为采用明文传送报文,安全性不好,很多Linux服务器都不开放telnet服务,而改用更安全的ssh方式了。但仍然有很多别的系统可能采用了telnet方式来提供远程登录,因此弄清楚telnet客户端的使用方式仍是很有必要的.

telnet命令还可做别的用途,比如确定远程服务的状态,比如确定远程服务器的某个端口是否能访问. telnet监听在23号端口,基于C/S架构,明文传输,于1969年被开发出来。互联网工程任务组(IETF),在STD 8中,将其加以标准化,是最早形成的互联网协议之一禁止管理员直接登录,支持su切换。

CentOS 6下使用xinetd管理守护进程。CentOS下统一将由systemd管理。

Telnet和SSH的区别(图)

telnet与ssh

Telnet使用

  • 安装telnet
代码语言:javascript
复制
yum  -y install telnet-server
  • 启动telnet服务
代码语言:javascript
复制
[%6%root@DS128 ~]# systemctl start telnet.socket
[%7%root@DS128 ~]# ss -tnl | grep 23
LISTEN     0      128         :::23                      :::*
[%8%root@DS128 ~]# ss -tnlp | grep 23 # -p选项查看23号端口由systemd协助监听
LISTEN     0      128         :::23                      :::*                   users:(("systemd",pid=1,fd=27))
  • 命令参数:
代码语言:javascript
复制
-8 允许使用8位字符资料,包括输入与输出。
-a 尝试自动登入远端系统。
-b<主机别名> 使用别名指定远端主机名称。
-c 不读取用户专属目录里的.telnetrc文件。
-d 启动排错模式。
-e<脱离字符> 设置脱离字符。
-E 滤除脱离字符。
-f 此参数的效果和指定"-F"参数相同。
-F 使用Kerberos V5认证时,加上此参数可把本地主机的认证数据上传到远端主机。
-k<域名> 使用Kerberos认证时,加上此参数让远端主机采用指定的领域名,而非该主机的域名。
-K 不自动登入远端主机。
-l<用户名称> 指定要登入远端主机的用户名称。
-L 允许输出8位字符资料。
-n<记录文件> 指定文件记录相关信息。
-r 使用类似rlogin指令的用户界面。
-S<服务类型> 设置telnet连线所需的IP TOS信息。
-x 假设主机有支持数据加密的功能,就使用它。
-X<认证形态> 关闭指定的认证形态。

Telnet数据包分析

代码语言:javascript
复制
tcpdump -i eno16777736 -p tcp port 23 -w telnet-test.cap

抓取telnet的包,在本地使用wireshark打开并分析该数据包,会发现 每击打键盘一次,就发送一个数据包,所以登录名stanley就发送了7个数据包(最少是7个数据包,每次服务器还需要有回应确认该数据包已收到);具体可以参考下面的图或大家自行抓包查看

Telnet四种工作模式

  • 半双工

客户端在接收用户输入之前,必须从服务器进程获得GO AHEAD (G A)命令. 现在已很少使用.

  • 一次一个字符

客户端把用户输入的每个字符都单独发送给服务器,服务器回显字符给客户端. 是目前大多数Telnet程序的默认方式. SUPPRESS GO AHEAD选项和ECHO选项必须同时有效.

  • 准行方式(kludge line mode)

用户每键入一行信息,客户端向服务器发送一次. 当上面两个选项其中之一无效时采用此模式.

  • 行方式

类似准行方式,纠正了准行方式的缺点. 较新的Telnet程序支持这种方式

telnet的工作过程

使用Telnet协议进行远程登录时需要满足以下条件:

  1. 在本地计算机上必须装有包含Telnet协议的客户程序;
  2. 必须知道远程主机的Ip地址或域名;
  3. 必须知道登录标识与口令。

Telnet远程登录服务分为以下4个过程:

  1. 本地与远程主机建立连接。该过程实际上是建立一个TCP连接,用户必须知道远程主机的Ip地址或域名;
  2. 将本地终端上输入的用户名和口令及以后输入的任何命令或字符以NVT(Net Virtual Terminal)格式传送到远程主机。该过程实际上是从本地主机向远程主机发送一个IP数据包;
  3. 将远程主机输出的NVT格式的数据转化为本地所接受的格式送回本地终端,包括输入命令回显和命令执行结果;
  4. 最后,本地终端对远程主机进行撤消连接。该过程是撤销一个TCP连接。

为什么说telnet的效率不高?

telnet数据包流向

如图为Telnet中的数据流向

  1. 数据信息被用户从本地键盘键入并通过操作系统传到客户机程序;
  2. 客户机程序将其处理后返回操作系统,并由操作系统经过网络传送到远程机器;
  3. 远程操作系统将所接收数据传给服务器程序,并经服务器程序再次处理后返回到操作系统上的伪终端入口点;
  4. 最后,远程操作系统将数据传送到用户正在运行的应用程序,这便是一次完整的输入过程;

输出将按照同一通路从服务器传送到客户机。因为每一次的输入和输出,计算机将切换进程环境好几次,而且默认telnet是逐字节传输数据,这个开销非常昂贵。还好用户的键入速率并不算高,这个缺点我们仍然能够接受。因此,telnet的使用场景也很局限。基本上只是为了确定远端服务器是否开启目标端口时才会使用。

telnet的启动不是service telnet start这种方式。而是采用

代码语言:javascript
复制
chkconfig telnet on
service xinetd restart
ss –tnl | grep –w 23

xinted超级守护进程。主要维护不常用的服务,但频率不高,但如果一直监听在端口上占用资源,这对服务器的性能消耗多大,所以就有一个超级服务保姆,xinted就是起这个功能的,代为响应这些服务,当用户临时请求过来时,xinted就启动对应进程来响应服务。所以大多数时候,xinted就是起到这个功能,其它这些服务器对应超级守护进程,瞬时服务。

telnet因为是明文传输,所以不允许超级用户登录。所以只有使用telnet来登录。在整个登录过程中如果使用tcpdump会抓取到所有的明文登录用户名和密码信息。所以是非常不安全的。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-05-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 运维部落 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Telnet 发展史
  • Telnet和SSH的区别(图)
  • Telnet使用
    • Telnet数据包分析
      • Telnet四种工作模式
        • telnet的工作过程
          • 为什么说telnet的效率不高?
          相关产品与服务
          云联网
          云联网(Cloud Connect Network,CCN)提供全网互联服务,助力您实现各地域的云上、云下多点互联。云联网的智能调度、路由学习等特性,可帮助您构建极速、稳定、经济的全网互联,轻松满足在线教育、游戏加速、混合云等全网互联场景下的极速体验。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档