Linux

SSH 认证原理与配置

·3 分钟阅读·856 字

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

📋 目录

SSH 认证原理与配置

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

1. 密码认证流程


1. 连接初始化

   客户端 → 服务器 22 端口:发送连接请求(含 SSH 协议版本)

   服务器 → 客户端:发送服务器公钥及支持的加密算法、认证方式

2. 协商加密算法

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

3. 用户身份验证

   客户端提示用户输入用户名和密码

   客户端将用户名和加密后的密码发送给服务器

4. 服务器验证

   服务器在本地用户数据库中查找用户记录

   比对加密后的密码是否匹配

5. 认证结果反馈

   匹配 → 建立安全会话

   不匹配 → 提示重新输入或限制登录次数

2. 密钥认证流程

2.1. 生成密钥对

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

2.2. 上传公钥

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

2.3. 连接认证流程


客户端发起连接请求 → 服务器接受连接

  → 服务器发送公钥给客户端

  → 客户端验证服务器公钥合法性

  → 客户端生成随机数,使用私钥签名,发送签名+随机数

  → 服务器使用客户端公钥验证签名

  → 验证成功 → 建立安全会话

3. 两种方式对比

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

4. 生产建议

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

关联文档

Yanche Blog

记录云原生、Linux、数据库等技术领域的学习心得,以及日常生活的思考与感悟。

© 2026 Yanche Blog. All rights reserved.

Powered by Astro