Telnet、SSH 原理

2023年 1月 4日 77.8k 0

本文主要介绍了Telnet、SSH 的通信原理,分析了其通信时的工作流程。

1. Telnet

无论Telnet协议连接的是什么类型终端,都会转换为NVT(Net Virtual Terminal)格式进行通信。网络虚拟终端NVT是Telnet异构跨平台的基础。

1.1 Telnet 的工作进程

  • 本地与远程主机建立连接,该过程实际上是建立一个TCP 连接,用户必须知道远程主机的 IP 地址或域名
  • 将本地终端上输入的用户名和口令及以后输入的任何命令或字符以NVT格式传送到远程主机。该过程实际上是从本地主机向远程主机发送一个IP 数据报
  • 将远程主机输出的 NVT格式的数据转化为本地所接受的格式送回本地终端,包括输入命令回显和命令执行结果
  • 最后,本地终端对远程主机撤消TCP 连接
  • 这里,telnet协议的客户机和服务器端的数据交互都是以明文的方式来进行的。通过抓包工具很容易获取到这些数据,对网络设备进行攻击。

    1.2 常见的Telnet攻击手段

  • 密码窃取:通过抓包等方式窃取到用户帐号和密码
  • 中间人攻击:“中间人”冒充真正的服务器接收到客户端传给服务器的数据,然后再冒充你把数据传给真正的服务器
  • 伪服务器:攻击者冒充服务器与客户端进行交互,骗取客户端的帐号信息
  • 2. SSH,Secure Shell

    把所有传输的数据进行加密,这样"中间人"这种攻击方式就不可能实现了,而且也能够防止 DNS 和IP 欺骗,这就是SSH。

    3. SSH登录过程

  • 版本号协商。服务器打开22端口,等待客户端连接,连接后,服务器与客户端协商协议版本。
  • 密钥和算法协商阶段。服务端和客户端分别发送算法协商报文给对方,报文中包含支持的各种协议的算法列表。根据协商服务器端和客户端选定使用的算法。服务端和客户端利用DH交换算法、主机密钥对等参数,生成会话密钥和会话ID。
  • 认证阶段。客户端使用密钥和算法协商阶段生成的会话密钥加密账号、认证方法、口令,将结果发送给服务器。服务端使用获得的会话密钥解密报文,得到账号和口令,进行认证。SSH提供两种认证方式(2.0版本还支持password-publickey和any认证):
    • 密码认证。客户端将用户名和密码加密后发送给服务器,服务器解密后进行比对认证。
    • 数字签名认证。设备上利用RSA或者DSA公共秘钥算法实现数字签名,生成public和key,然后将public上传到服务器。登录认证时,服务器端向客户端发送随机字符串,用户用自己的私钥加密后,再发回来。服务器用储存的公钥进行解密认证。
  • 扩展:SSH原理与运用(一):远程登录

    相关文章

    KubeSphere 部署向量数据库 Milvus 实战指南
    探索 Kubernetes 持久化存储之 Longhorn 初窥门径
    征服 Docker 镜像访问限制!KubeSphere v3.4.1 成功部署全攻略
    那些年在 Terraform 上吃到的糖和踩过的坑
    无需 Kubernetes 测试 Kubernetes 网络实现
    Kubernetes v1.31 中的移除和主要变更

    发布评论