当前位置: 首页 > news >正文

SSH认证核心机制

SSH认证核心机制

一、挑战-响应阶段:验证密钥对的有效性

  1. 服务端生成随机挑战

    • 服务器生成一个动态随机字符串(如 random_challenge=abc123),并发送给客户端。
  2. 客户端用私钥签名挑战

    • 客户端使用本地保存的私钥(如 id_rsa)对挑战进行签名,生成 signature=xyz789
  3. 服务端用公钥验证签名

    • 服务器使用客户端提供的公钥(如 id_rsa.pub)解密签名。
    • 如果解密后的结果与原始挑战(abc123)一致,则证明客户端拥有与公钥匹配的私钥。

二、公钥存在性检查:确认授权关系

  1. 计算公钥指纹

    • 服务器对客户端提供的公钥(id_rsa.pub)计算指纹(如 SHA-256 哈希值)。
  2. 检查授权文件

    • 服务器检查目标账户的 ~/.ssh/authorized_keys 文件,确认该指纹是否存在于文件中。
    • 例如,如果目标是管理员账户,服务器会检查 /home/admin/.ssh/authorized_keys
  3. 授权决策

    • 如果指纹存在,则允许登录;否则拒绝连接。

三、关键逻辑关系

  1. 顺序不可逆

    • 必须先通过挑战-响应验证密钥对的有效性(步骤一),才能进入公钥存在性检查(步骤二)。
    • 如果签名验证失败(如私钥不匹配),服务端会直接拒绝连接,无需检查 authorized_keys
  2. 双重保障

    • 密钥对有效性:确保客户端拥有合法的私钥。
    • 公钥授权:确保该公钥已被目标账户显式授权。

四、举例说明

假设以下场景:

  • 服务器 IP:192.168.1.100
  • 目标账户:admin
  • 客户端公钥:ssh-rsa AAAAB3NzaC1yc2E... user@client

连接过程

  1. 挑战-响应

    • 服务器发送挑战:abc123
    • 客户端用私钥签名:signature=xyz789
    • 服务器用公钥解密签名,得到 abc123,验证通过。
  2. 公钥存在性检查

    • 服务器计算公钥指纹:SHA256:abc123...xyz
    • 检查 /home/admin/.ssh/authorized_keys,发现匹配的条目:
ssh-rsa AAAAB3NzaC1yc2E... user@client
  • 允许登录。

拒绝连接场景

  • 如果客户端的公钥未添加到 authorized_keys 文件中:
    • 挑战-响应验证通过(私钥有效)。
    • 公钥指纹检查失败(未授权)。
    • 服务器返回错误:Permission denied (publickey)

五、总结

  • 挑战-响应阶段使用客户端提供的私钥和公钥,验证密钥对的有效性。
  • 公钥存在性检查确认该公钥是否已被目标账户授权。
  • 两者是串联关系,必须同时满足才能登录。
  • 这一设计确保了 SSH 认证的安全性:既验证了密钥的合法性,又确保了授权的明确性。
http://www.xdnf.cn/news/476659.html

相关文章:

  • 索恩格汽车SEG Automotive EDI 需求分析
  • 用 Rust 带你了解 TCP 和 UDP
  • Neo4j(一) - Neo4j安装教程(Windows)
  • 事件驱动架构:从传统服务到实时响应的IT新风潮
  • 泰迪杯特等奖案例深度解析:基于多模态融合与小样本学习的工业产品表面缺陷智能检测系统
  • 主流数据库运维故障排查卡片式速查表与视觉图谱
  • PCIe数据采集系统详解
  • Python Poetry使用教程
  • llamafactory SFT 从断点恢复训练
  • 论文阅读:Self-Collaboration Code Generation via ChatGPT
  • uniapp-商城-58-后台 新增商品(属性子级的添加和更新)
  • Axure设计的“广东省网络信息化大数据平台”数据可视化大屏
  • 基于大模型预测的脑出血全流程诊疗技术方案
  • IDEA:程序编译报错:java: Compilation failed: internal java compiler error
  • Java 使用 PDFBox 提取 PDF 文本并统计关键词出现次数(附Demo)
  • uniapp-商城-59-后台 新增商品(属性的选中,进行过滤展示,filter,some,every和map)
  • 深入解析VPN技术原理:安全网络的护航者
  • 金融问答系统:如何用大语言模型打造高精度合规的金融知识引擎
  • math toolkit for real-time development读书笔记一-三角函数快速计算(1)
  • Oracle 批量操作脚本解析:动态执行与分批次删除
  • STM32就业前景和下载KEIL软件(保姆级)
  • MongoDB分片集群
  • 自定义快捷键软件:AutoHotkey 高效的快捷键执行脚本软件
  • Deeper and Wider Siamese Networks for Real-Time Visual Tracking
  • 香港 GPU 服务器优势及使用场景解析
  • 灌区量测水自动化监测解决方案
  • Git基础使用方法与命令总结
  • MySQL的缓存策略
  • C# 面向对象 构造函数带参无参细节解析
  • 巧记英语四级单词 Unit8-上【晓艳老师版】