SSH 知识梳理

举报
yd_278385342 发表于 2026/11/02 16:29:34 2026/11/02
【摘要】 一、SSH 是什么SSH(Secure Shell)是一个应用层协议,基于 TCP,默认端口 22,用于在不安全网络上提供加密的远程登录、命令执行和文件传输。它取代了 telnet、rlogin、rsh、ftp 等明文协议。协议版本:SSH-1 因存在安全缺陷已淘汰,现全部使用 SSH-2。主流实现:OpenSSH(Linux/macOS 默认)、PuTTY(Windows)、Dropbea...

一、SSH 是什么

SSH(Secure Shell)是一个应用层协议,基于 TCP,默认端口 22,用于在不安全网络上提供加密的远程登录、命令执行和文件传输。它取代了 telnet、rlogin、rsh、ftp 等明文协议。

  • 协议版本:SSH-1 因存在安全缺陷已淘汰,现全部使用 SSH-2。

  • 主流实现:OpenSSH(Linux/macOS 默认)、PuTTY(Windows)、Dropbear(嵌入式)。

  • 核心能力:加密、完整性校验、服务器身份认证、客户端身份认证、通道多路复用、端口转发。


二、协议分层

SSH 协议由三个子协议组成,依次运行:



子协议 作用
传输层协议(Transport Layer) 密钥交换、服务器认证、对称加密、消息完整性(MAC)
用户认证协议(User Auth) 认证客户端用户身份
连接协议(Connection) 将加密通道复用成多个逻辑通道(shell、exec、转发)

一次完整连接的建立流程

  1. TCP 三次握手,连接 22 端口。

  2. 版本协商:双方交换形如 SSH-2.0-OpenSSH_9.6 的标识字符串。

  3. 算法协商 + 密钥交换(KEX):双方列出各自支持的算法,按优先级协商出 KEX、主机密钥算法、加密算法、MAC 算法、压缩算法。通过 DH/ECDH/Curve25519 交换,派生出会话密钥。此阶段服务器用主机私钥对交换哈希签名,客户端据此验证服务器身份。

  4. 服务请求:客户端请求 ssh-userauth 服务。

  5. 用户认证:见下节。

  6. 通道建立:进入连接协议,开启 session 通道,执行 shell 或命令。

常见算法(了解即可)

  • 密钥交换:curve25519-sha256、ecdh-sha2-nistp256、diffie-hellman-group14-sha256

  • 主机密钥:ssh-ed25519、rsa-sha2-256/512、ecdsa-sha2-nistp256

  • 对称加密:chacha20-poly1305@openssh.com、aes256-gcm@openssh.com、aes256-ctr

  • MAC:hmac-sha2-256-etm@openssh.com、umac-128-etm@openssh.com

旧算法(ssh-dss、diffie-hellman-group1-sha1、arcfour 等)应显式禁用。


三、身份认证方式



方式 说明 安全性
公钥认证 客户端持有私钥,服务器 authorized_keys 存公钥 高,最常用
密码认证 传输过程加密,但仍易被暴力破解 中,建议关闭
Keyboard-Interactive 交互式,常配合 OTP/2FA 中
GSSAPI(Kerberos) 企业域环境单点登录 高
证书认证 由 CA 统一签发,无需逐台维护 authorized_keys 高,适合大规模
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。