本地客户端ssh连接远程服务器,远程服务器的ssh进程都做了哪些工作?

news/2025/10/29 10:56:03/文章来源:https://www.cnblogs.com/imust2008/p/19173719

服务端的 sshd 进程在处理一个 SSH 连接时,工作非常复杂和精密。我们可以将其工作流程分为几个关键阶段。

整体工作流程概览

  1. 连接建立与协议协商
  2. 用户认证
  3. 通道与会话管理
  4. 伪终端与 Shell 启动
  5. 数据中继与生命周期管理

下面我们来详细拆解每个阶段。


阶段一:连接建立与协议协商

  1. 监听连接sshd 守护进程在后台持续运行,监听默认的 22 端口(或配置的其它端口)。
  2. 接受 TCP 连接:当客户端发起连接,主 sshd 进程会接受这个 TCP 连接。
  3. 协议版本交换:双方交换标识字符串,例如 SSH-2.0-OpenSSH_8.2p1,以确定使用 SSH-1 还是 SSH-2 协议(现代系统基本都用 SSH-2)。
  4. 密钥交换与加密层建立
    • 使用 Diffie-Hellman 等算法协商一个临时的、唯一的会话密钥。这个密钥本身不会在网络上传输。
    • 基于会话密钥,生成后续通信使用的加密密钥完整性验证密钥
    • 协商双方支持的加密算法(如 AES-CTR)、MAC 算法等。
    • 从此之后,所有的通信都被加密和完整性保护。

阶段二:用户认证

在安全的加密通道建立后,服务器需要验证客户端的身份。

  1. 客户端发起认证请求:客户端声明要使用哪个用户名进行认证。
  2. 认证方法协商:服务器根据配置(/etc/ssh/sshd_config)和客户端能力,按顺序尝试不同的认证方法。常见的有:
    • 公钥认证:最常用的方式。服务端检查用户家目录下的 ~/.ssh/authorized_keys 文件,看是否存在客户端提供的公钥。如果存在,服务端会生成一个随机挑战,用该公钥加密,发送给客户端。客户端必须用对应的私钥解密并回应,才能证明自己的身份。
    • 密码认证:服务端要求客户端提供用户的登录密码,并通过系统的 PAM 或直接 shadow 文件来验证密码。
    • 键盘交互认证:用于双因素认证等场景,服务端可以发送一系列提示(如密码 + 验证码),客户端依次回答。
  3. 认证成功:一旦任何一种认证方法成功,用户即被视为已登录。

阶段三:通道与会话管理

SSH 协议是分层的。在加密连接内部,可以创建多个独立的逻辑“通道”。

  1. 通道请求:认证成功后,客户端会发送一个 session 通道请求。这相当于在 SSH 连接内部开辟了一个独立的对话线路。
  2. 处理客户端请求:在 session 通道内,客户端可以发起不同类型的请求,服务端 sshd 需要处理这些请求:
    • pty-req:请求分配一个伪终端。
    • shell:请求启动一个默认的 Shell。
    • exec:请求执行一个特定的命令。
    • subsystem:请求启动一个子系统,最典型的是 sftp

阶段四:伪终端与 Shell 启动(核心环节)

当客户端请求一个交互式 Shell 时(这是最常见的情况),服务端 sshd 会进行我们在上一个问题中讨论的伪终端创建工作

  1. 创建伪终端
    • sshd 进程(的子进程)调用 posix_openpt() 等函数,打开主设备
    • 操作系统解锁并返回一个对应的从设备路径,如 /dev/pts/2
  2. 启动用户进程
    • sshd 通过 fork() 创建一个子进程。
    • 在该子进程中,它可能会调用 setuid() 切换到登录用户的身份。
    • 然后它打开从设备,并将其复制到新进程的标准输入、标准输出和标准错误文件描述符上。
    • 最后,通过 exec() 系列函数启动用户配置的 Shell(如 /bin/bash)。
  3. Shell 的错觉:现在,Shell 认为自己连接到了一个真实的终端(/dev/pts/2),并正常地从“键盘”读取输入,向“屏幕”输出结果。

阶段五:数据中继与生命周期管理

这是 sshd 进程持续进行的工作,也是其核心职责。

  1. 数据泵
    • 输入方向sshd 从加密的 TCP 套接字中读取客户端发送的按键数据,将其解密后,写入伪终端的主设备。这些数据随后会被 Shell 从从设备读取。
    • 输出方向sshd 同时监听伪终端的主设备,等待 Shell 有输出。一旦有输出,它就从主设备读取数据,加密后,通过 TCP 套接字发送给客户端。
  2. 信号和窗口大小转发
    • 当你在客户端按下 Ctrl+C 时,客户端不会发送字符 ^C,而是会通过一个特殊的消息告诉服务器“请发送 SIGINT 信号”。
    • sshd 收到这个消息后,会向 Shell 进程组发送 SIGINT 信号。
    • 同样,当你调整终端窗口大小时,客户端会通知服务器,sshd 则使用 ioctl() 系统调用调整伪终端的大小,Shell 和其下的程序(如 vim)就能感知到变化。
  3. 连接保活与超时管理sshd 会监控连接状态,处理客户端超时或无响应的情况,并根据配置断开连接。
  4. 清理工作:当连接断开(客户端退出或网络中断),sshd 会:
    • 向 Shell 及其所有子进程发送 SIGHUP 信号,终止它们。
    • 关闭伪终端。
    • 释放所有资源,退出处理这个连接的子进程。

总结

服务端的 sshd 进程扮演了一个超级中介的角色,它的核心工作包括:

  • 密码学家:负责建立安全的加密通道。
  • 门卫:严格验证用户的身份。
  • 制片人:为用户的 Shell“搭建舞台”——创建伪终端。
  • 翻译官:在加密的网络数据流和明文的终端数据流之间进行转换和中继。
  • 信使:在客户端和 Shell 进程之间转发信号和控制信息。
  • 清洁工:在会话结束时,负责清理现场。

正是通过这一系列复杂而精密的协作,才使得我们能够安全、稳定地从远程操作一台服务器,感觉就像坐在它的本地终端前一样。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/949636.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

goldengate 12.x安装(oracle)

goldengate在11.2.X版本的时候直接将压缩包解压即可使用,12.X版本出来后,有2种安装方式,1种是图像界面安装,另一种是静默安装方式,跟oracle安装方式保持一致,我这里安装的是静默的安装方式,ogg版本为122022.安装过…

数据采集故障频发,中控技术靠SeaTunnel实现日均TB级核心数据同步任务0出错

在企业数字化浪潮中,数据采集早已不是 "能同步就行" 的简单命题——多元异构数据源的割裂、TB 级数据的吞吐压力、跨系统同步的稳定性挑战,正成为多数企业的 "数据顽疾"。而中控技术,这家服务全…

2025年10月祛斑产品推荐榜:五款单品横向对比

色斑反复、色沉难退、成分刺激,是多数人在祛斑路上绕不过的三道坎。2025年第三季度,国家药监局发布的《祛斑类化妆品注册备案年度报告》显示,祛斑新品备案量同比增18%,但用户满意度仅提升3.6个百分点,说明“产品多…

yolo简单使用

from ultralytics import YOLO #从头开始创建一个新的YOLO模型mode = YOLO(yolo12.yaml).load(yolo12n.pt) #加载预训练的YOLO模型(推荐用于训练)#model = YOLO(yolov8n.pt) #使用“coco128.yaml”数据集训练模型3个…

穿透式页面和菜单页面同时共存的解决方案

穿透式页面和菜单页面同时共存的解决方案 在页面A(源页面)上点击一个卡片,穿透到页面B(目标页面)。将来自卡片A的特定“查询和统计参数”携带到页面B。页面B也可以通过其他方式访问(例如,从菜单栏直接进入)。页…

2025年管母线厂家权威推荐:绝缘铝管母线/管型母线/全屏蔽绝缘铜管母线源头厂家精选

在电网升级与新能源建设的双重推动下,作为电力系统中关键导流元件的管母线,其市场需求持续增长,产品技术迭代加速。 管母线以其载流量大、机械强度高、散热性能好等优势,在变电站、新能源电站、大型建筑配电等领域…

2025年10月祛斑产品推荐榜:权威评测五强对比

色斑反复、色沉难退、屏障受损,是多数消费者在祛斑路上绕不开的三道坎。2025年第三季度国家药监局《化妆品功效宣称评价报告》显示,祛斑类新品备案量同比增27%,但用户满意度仅58%,主要痛点集中在“效果慢、易返黑、…

2025年10月精华液对比榜:从传明酸到多肽的真实排行

入秋后紫外线强度虽降,但色斑、暗沉、屏障脆弱等“夏季后遗症”集中爆发,很多用户开始把“换一瓶有效精华”提上日程。面对电商页面密密麻麻的成分表、前后对比图、直播话术,大家普遍担心三件事:一是功效单一,美白…

2025年10月精华液产品推荐榜:敏感肌适配排行

入秋以后,紫外线强度虽降,但色斑、暗沉、屏障受损往往集中爆发:晒斑颜色加深、熬夜蜡黄难退、换季泛红刺痛,很多人把“猛药”精华层层叠加,结果刺激大于修护,越用越干痒。与此同时,国家药监局2025年第三季度化妆…

Linux 中为什么要提出伪终端这个概念呢?shell 等命令行程序不可以直接从显示器和键盘读取数据吗?

这是一个非常好的问题,它触及了 Linux/Unix 系统设计中的一个核心概念。简单回答是:为了实现灵活性和复用性,将终端硬件管理与会话逻辑分离开来。 下面我们来详细拆解这个问题。 为什么不能直接从键盘和显示器读取?…

DevSecOps在中国市场迎来爆发式增长:技术融合驱动软件安全新范式

DevSecOps在中国市场迎来爆发式增长:技术融合驱动软件安全新范式 安全左移战略下的DevSecOps市场蓬勃发展 中国DevSecOps市场正经历前所未有的高速增长期,这背后是国家政策推动与企业数字化转型需求的双重驱动。根据…

GaussDB 数据操作

处理大数据量 -- 批量插入1000条数据 DO $$ DECLAREbatch_size INT := 1000; BEGINWHILE TRUE LOOP-- 插入数据sqlINSERT INTO target_table (column1, column2) values (batch_size,"111");--循环判断条件b…

hashmap 和currenthashmap 的原理?详解一下

HashMap 和 ConcurrentHashMap 是 Java 中用于存储键值对(Key-Value)的哈希表实现,但前者是非线程安全的,后者是线程安全的,且两者的底层原理和设计目标有显著差异。以下从数据结构、核心机制、线程安全(仅 Conc…

2025年咖啡生豆供货商权威推荐:烘培咖啡豆/进口咖啡豆/商用咖啡豆源头供应商精选

一杯高品质的咖啡,始于一粒优质的咖啡生豆。在全球咖啡产业链中,生豆供应商是决定咖啡品质与风味的基础环节。 随着中国咖啡消费市场的持续增长,2024年中国咖啡生豆进口量已突破15万吨,年均增长率稳定在10%-15% 之…

2025年固体柜优质厂家权威推荐榜单:固体环网柜/固体绝缘环网柜/固体绝缘柜源头厂家精选

在电力设备升级浪潮中,固体绝缘柜以其环保、紧凑、高可靠性的优势,正成为配电网领域的新宠。 据最新行业调研数据显示,2025年中国固体绝缘柜市场规模预计将达到28亿元,同比增长19%,占环网柜市场总份额的35%。这一…

gda 操作

拖入apk 按菜单栏搜索按钮 搜索结果中双击定位到位置 F5 切换汇编和java代码 M键 修改指令 修改完 R键 应用到apk并重新签名,你应该能在目录中看到重签名后的 appname_sig.apk 手机拿到apk安装.作者:xuejianxiyang出…

基于光滑L0范数和修正牛顿法的压缩感知重建算法MATLAB实现

1. 算法理论基础 1.1 压缩感知问题描述 压缩感知旨在从少量线性测量中恢复稀疏信号: \[y = \Phi x + e \]其中:\(y \in \mathbb{R}^M\):观测向量 (M << N) \(\Phi \in \mathbb{R}^{M\times N}\):测量矩阵 \(…

如何利用Spring Initializr快速搭建项目

利用Spring Initializr快速搭建Spring Boot项目是开发中的常用方式,以下是详细步骤说明: 1. 访问Spring Initializr 打开浏览器,输入官方地址:https://start.spring.io/这是Spring官方提供的项目初始化工具,界面简…

[题解]QOJ #8520. Xor Partitions

QOJ #8520. Xor Partitions 给定非负整数序列 \(A_1,A_2,\dots,A_n\),求所有非空划分的权值之和。一个划分的权值定义为每一段的异或和之积。 \(n\le 3\times 10^5,a\in[0,10^{18}]\)。 Sample in: 4 7 3 1 2Sample …

lora技术在无线抄表行业中的应用及方案优点

随着社会不断的发展,几乎家家户户都已经安装了家庭用电,但是大量的用户也造成了管理不便的麻烦,传统的抄表方式往往需要投入大量的人工和时间成本,所以现在急需一种自动化、方便、简单的抄表方式。传统的人工抄表方…