目录
[1. 密码登录](#1. 密码登录)
[2. 密钥登录](#2. 密钥登录)
什么是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密钥认证提供了比传统密码认证更高级别的安全性。通过理解公钥私钥的工作原理和完整的认证流程,你可以:
-
✅ 实现无需密码的安全远程访问
-
✅ 有效防御暴力密码破解攻击
-
✅ 建立更加可靠的自动化运维流程
-
✅ 提升整体系统安全水平