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

SSH密钥登录全流程详解

1、协商交互过程

  1. 客户端向目标服务器发送登录请求。在SSH 服务启用了证书验证登录方式后,会优先通过证书验证方式进行登录验证。

  2. 目标服务器根据 SSH 服务配置,在用户对应目录及文件中读取到有效的公钥信息。

  3. 目标服务器生成一串随机数,然后使用相应的公钥对其加密。

  4. 目标服务器将加密后的密文发回客户端。

  5. 客户端使用默认目录或 -i 参数指定的私钥尝试解密。

  6. 如果解密失败,则会继续尝试密码验证等其它方式进行登录校验。如果解密成功,则将解密后的原文信息重新发送给目标服务器。意思类似于:“看,这是这段话的原文。我能读懂发过来的密文,我拥有服务器的控制权,请让我登录。”

  7. 目标服务器对客户端返回的信息进行比对。如果比对成功,则表示认证成功,客户端可以登录。如果对比失败,则表示认证失败,则会继续尝试密码验证等其它方式进行登录校验。

2、Linux客户端登录演示

(1)在客户端本地生成一对密钥

ssh-keygen -t rsa -P '' -f /root/.ssh/id_rsa| 参数 | 含义 | 解释 |
| :--- | :--- | :--- |
|ssh-keygen| 密钥生成工具 | OpenSSH 套件中用于创建认证密钥对的程序。 |
|-t rsa| 指定密钥类型 | `-t` 是type的缩写。`rsa` 是一种非对称加密算法。这是最常
用和兼容性最好的算法之一(其他还有 `ed25519`, `ecdsa`)。 |
| -P '' |设置私钥的密码(Passphrase)| `-P` 后面跟一个密码字符串。`''`(两个单引
号)表示空密码。这意味着生成的私钥文件没有密码保护。这是一个安全权衡:方便自动化脚
本,但降低了密钥本身的安全性。如果密钥文件泄露,任何人都可以直接使用它。 |
|-f /root/.ssh/id_rsa| 指定密钥文件的保存路径和文件名 | `-f` 是 file 的缩写。这
里指定将私钥保存为 `/root/.ssh/id_rsa`,公钥则会自动保存在同名目录下的同名文件加上`.pub`后缀,即 `/root/.ssh/id_rsa.pub`。 |

(2)在客户端,将公钥复制到要登录的远程主机的某用户的家目录下的特定文件中

ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.17.156

(3)测试登录

ssh root@192.168.17.156

3、Windows环境Xshell登录演示

(1)打开Xshell程序。

(2)单击 工具 > 用户密钥管理者 ,再点击 生成 。

(3)在打开的密钥创建向导中,选择默认的 RSA 密钥算法及密钥长度(默认 2048 位)后,点击 下一步 。

(4)程序生成密钥对后,点击 下一步。

(5)如前面所述,密钥加密密码留空:

(6)复制生成的公钥到目标主机的/root/.ssh/authorized_keys 尾部追加

echo   "ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAuShdyXE9IFRUvHtMZxuosaX0qh18pcACy
YVS+SYzZWLv2l+6Yavte0Q78s3IkCn2P8VQ8HvAbwWX+Qk/w4qLRHrTBacJisP71fNkKhKqwYW/0r
q+dT+FyXkaIPIGR0fWSqLg7dzodZD30QsFStYtfeuzR6mGN08UZg+snhN4FeJ5MCTgf2mkPXyxZ94
agC9cgeKnZv33+/I1/pLI0bA4oPtAOrbM8TFoieeply9BOw9/6LluzPFEBmryMPVVp12XmSRHmMcm
wEqJlhaCBWp/1dDK5+YrXsBe8dfSUVsho0SLaTN4soxI5skIrDRtNc/UdjfeRC0fA9V8Gk2y1v/2PQ==" 
>> /root/.ssh/authorized_keys

(7)复制完成后返回Xshell,输入目标主机IP,用户身份认证选择公钥认证

http://www.dtcms.com/a/352649.html

相关文章:

  • LeetCode-221. 最大正方形
  • 多模块 Starter 最佳实践(强烈推荐!!!)
  • Quarkus OIDC 安全链路时序图
  • git换行行为差异简述;.editorconfig换行行为简述
  • 打工人日报#20250826
  • 【PS实战】制作hello标志设计:从选区到色彩填充的流程(大学作业)
  • springboot启动的时候,只打印logo,不打印其他的任何日志的原因
  • 【ElasticSearch】数据同步
  • 人形机器人的“奥运会“:宇树科技领跑,动捕技术成训练关键
  • git submodule的基本使用
  • 数据与端点安全 (Protect data and apps)
  • 利用 Python 爬虫按关键字搜索 1688 商品详情 API 返回值说明(代码示例)实战指南
  • 从零开始配置前端环境及必要软件安装
  • 技术总结:AArch64架构下Jenkins Agent(RPM容器编译节点)掉线问题分析与排查
  • 基于用户行为分析的精确营销系统
  • 【java并发编程】--cas和synchronized
  • openEuler Embedded 的 Yocto入门 : 2. 构建一个Hello,world!
  • PWM控制实现呼吸灯
  • 基于CentOS7:Linux服务器的初始化流程
  • 基于51单片机的指纹红外密码电子锁
  • 【Elasticsearch】k-NN 搜索深度解析:参数优化与分数过滤实践
  • Pascal使用TMediaPlayer播放MIDI文件时的错误
  • 红外遥控模块
  • 逻辑流图、作业图、执行图、物理图
  • 嵌入式软件移植
  • 【制作100个Unity游戏】从零开始构建类《月圆之夜》《杀戮尖塔》的卡牌游戏(附带项目源码)
  • Windows远程协助安全配置与使用限制
  • STM32G4 SVPWM VF开环强拖电机
  • 2026 届最新大数据专业毕设选题推荐,毕业设计题目汇总
  • 达索 Enovia 许可管理技术白皮书:机制解析与智能优化实践