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

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

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

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

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

相关推荐
宇钶宇夕5 小时前
三旺 INP314T 网关快速入门指南:从登录到基础配置
运维·自动化·软件工程
上海云盾-小余5 小时前
WEB防火墙的主要防御功能有哪些
安全·web安全·网络安全·安全威胁分析·ddos
2***s6725 小时前
Failed to restart nginx.service Unit nginx.service not found
运维·nginx
游戏开发爱好者85 小时前
iOS 开发者的安全加固工具,从源码到成品 IPA 的多层防护体系实践
android·安全·ios·小程序·uni-app·cocoa·iphone
YongCheng_Liang6 小时前
Zabbix 6.4 完整部署教程:从环境准备到监控实战
linux·运维·zabbix
数字化顾问6 小时前
(65页PPT)大型集团物料主数据管理系统建设规划方案(附下载方式)
大数据·运维·人工智能
翼龙云_cloud6 小时前
阿里云渠道商:新手怎么操作阿里云无影云电脑?
运维·服务器·阿里云·云计算·电脑
回忆是昨天里的海7 小时前
docker存储-目录挂载
运维·docker·容器
爱吃萝卜的美羊羊8 小时前
ubuntu下国内升级ollama
linux·运维·ubuntu
mzhan0178 小时前
Linux: console: printk: console_no_auto_verbose
linux·运维·服务器