Linux

SSH 认证原理与配置

·3 分钟阅读·884 字
📋 目录

SSH 认证原理与配置

SSH(Secure Shell)提供两种主要认证方式:密码认证和密钥认证。

一、密码认证流程

1. 连接初始化
   客户端 → 服务器 22 端口:发送连接请求(含 SSH 协议版本)
   服务器 → 客户端:发送服务器公钥及支持的加密算法、认证方式

2. 协商加密算法
   双方根据支持的算法列表,协商加密算法用于后续数据加密

3. 用户身份验证
   客户端提示用户输入用户名和密码
   客户端将用户名和加密后的密码发送给服务器

4. 服务器验证
   服务器在本地用户数据库中查找用户记录
   比对加密后的密码是否匹配

5. 认证结果反馈
   匹配 → 建立安全会话
   不匹配 → 提示重新输入或限制登录次数

二、密钥认证流程

1. 生成密钥对

客户端使用 ssh-keygen 生成一对密钥:公钥(可公开)和私钥(安全保存,不能泄露)。

2. 上传公钥

将公钥上传到服务器,保存在 ~/.ssh/authorized_keys 文件中。

3. 连接认证流程

客户端发起连接请求 → 服务器接受连接
  → 服务器发送公钥给客户端
  → 客户端验证服务器公钥合法性
  → 客户端生成随机数,使用私钥签名,发送签名+随机数
  → 服务器使用客户端公钥验证签名
  → 验证成功 → 建立安全会话

三、两种方式对比

特性密码认证密钥认证
安全性依赖密码强度,易被暴力破解非对称加密,更安全
便利性每次输入密码免密登录
适合场景临时访问生产环境、自动化脚本

四、生产建议

  • 生产环境禁用密码认证,仅使用密钥认证
  • 修改 /etc/ssh/sshd_configPasswordAuthentication no
  • 使用 ssh-keygen -t ed25519 生成更安全的密钥对
  • 定期轮换密钥

关联文档

  • ../../network/tools/firewalld 与 iptables 对比 — SSH 端口放行
  • ../../network/网络 — 网络安全基础
  • Linux — Linux 系统管理主页