SSH密钥认证:从密码到密钥的安全升级指南

目录

什么是SSH?

SSH的两种登录方式

[1. 密码登录](#1. 密码登录)

[2. 密钥登录](#2. 密钥登录)

公钥与私钥详解

非对称加密基础

密钥存储位置

生成SSH密钥对

基本生成命令

密钥生成过程

SSH密钥登录验证过程

可视化流程

实例

​编辑

总结


什么是SSH?

SSH(Secure Shell)是一种加密的网络传输协议,用于在不安全的网络中提供安全的远程登录和其他安全网络服务。它取代了不安全的Telnet、rlogin等明文传输协议。


SSH的两种登录方式

1. 密码登录

  • 工作原理:用户输入用户名和密码,服务器验证凭据

  • 优点:简单易用,无需预先配置

  • 缺点:易受暴力破解,安全性依赖密码强度

2. 密钥登录

  • 工作原理:使用非对称加密技术进行身份验证

  • 优点:更高的安全性,抵抗暴力攻击

  • 缺点:需要前期配置,管理稍复杂


公钥与私钥详解

非对称加密基础

在非对称加密体系中,存在一对数学上相关的密钥:

私钥

  • 相当于你的"个人印章"或"身份证"

  • 必须严格保密,绝不共享

  • 用于解密数据和生成数字签名

公钥

  • 相当于你的"公开展示柜"或"身份证明复印件"

  • 可以自由分发,无安全风险

  • 用于加密数据和验证签名

密钥存储位置

私钥存储路径

bash

复制代码
~/.ssh/id_rsa          # RSA算法私钥
~/.ssh/id_ecdsa        # ECDSA算法私钥  
~/.ssh/id_ed25519      # Ed25519算法私钥

公钥存储路径

bash

复制代码
~/.ssh/id_rsa.pub      # RSA公钥
~/.ssh/id_ecdsa.pub    # ECDSA公钥
~/.ssh/id_ed25519.pub  # Ed25519公钥

服务器授权文件

bash

复制代码
~/.ssh/authorized_keys  # 存储允许登录的公钥列表

生成SSH密钥对

基本生成命令

bash 复制代码
#直接写
ssh-keygen

# 生成RSA密钥(兼容性最好)
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

# 生成Ed25519密钥(更安全、更快速)
ssh-keygen -t ed25519 -C "your_email@example.com"

密钥生成过程

bash 复制代码
输入生成命令
    ↓
选择保存路径(默认~/.ssh/id_算法)
    ↓  
设置密钥密码(可选但推荐)
    ↓
生成密钥对:私钥 + 公钥
    ↓
设置正确的文件权限

SSH密钥登录验证过程

可视化流程

bash 复制代码
+----------+          +-----------------+          +------------+
|  客户端   |          |    SSH服务器     |          | 授权密钥文件 |
+----------+          +-----------------+          +------------+
     |                         |                         |
     | 1. 连接请求             |                         |
     |----------------------->|                         |
     |                         |                         |
     |                         | 2. 查找匹配公钥         |
     |                         |----------------------->|
     |                         |                         |
     |                         | 3. 生成随机挑战         |
     |                         | 用公钥加密              |
     |                         |                         |
     | 4. 发送加密挑战         |                         |
     |<-----------------------|                         |
     |                         |                         |
     | 5. 用私钥解密           |                         |
     | 获得原始挑战            |                         |
     |                         |                         |
     | 6. 发送挑战答案         |                         |
     |----------------------->|                         |
     |                         |                         |
     |                         | 7. 验证答案             |
     |                         |                         |
     | 8. 认证成功             |                         |
     |<-----------------------|                         |
     |                         |                         |
     | 9. 建立加密会话         |                         |
     |<======================>|                         |

实例

生成rsa非对称密钥对

将公钥发送

登录时流程:

复制代码
客户端 (foundation0)             服务器 (workstation)
      |                                |
      | --- SSH连接请求 --->           |
      |                                |
      | <--- 发送公钥挑战 ---         | 服务器生成随机数,用客户端公钥加密
      |                                |
      | --- 私钥解密后响应 --->        | 客户端用私钥解密,证明拥有私钥
      |                                |
      | <--- 认证成功 ---             | 服务器验证响应正确
      |                                |
      | === 对称加密会话 ===         | 建立加密通道传输数据

总结

SSH密钥认证提供了比传统密码认证更高级别的安全性。通过理解公钥私钥的工作原理和完整的认证流程,你可以:

  • ✅ 实现无需密码的安全远程访问

  • ✅ 有效防御暴力密码破解攻击

  • ✅ 建立更加可靠的自动化运维流程

  • ✅ 提升整体系统安全水平

相关推荐
甲鱼9291 小时前
MySQL 实战手记:日志管理与主从复制搭建全指南
运维
用户9623779544820 小时前
DVWA 靶场实验报告 (High Level)
安全
数据智能老司机1 天前
用于进攻性网络安全的智能体 AI——在 n8n 中构建你的第一个 AI 工作流
人工智能·安全·agent
数据智能老司机1 天前
用于进攻性网络安全的智能体 AI——智能体 AI 入门
人工智能·安全·agent
用户962377954481 天前
DVWA 靶场实验报告 (Medium Level)
安全
red1giant_star1 天前
S2-067 漏洞复现:Struts2 S2-067 文件上传路径穿越漏洞
安全
用户962377954481 天前
DVWA Weak Session IDs High 的 Cookie dvwaSession 为什么刷新不出来?
安全
碳基沙盒2 天前
OpenClaw 多 Agent 配置实战指南
运维
cipher3 天前
ERC-4626 通胀攻击:DeFi 金库的"捐款陷阱"
前端·后端·安全
蝎子莱莱爱打怪5 天前
Centos7中一键安装K8s集群以及Rancher安装记录
运维·后端·kubernetes