SSH 知识梳理
一、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、转发) |
一次完整连接的建立流程
-
TCP 三次握手,连接 22 端口。
-
版本协商:双方交换形如
SSH-2.0-OpenSSH_9.6的标识字符串。 -
算法协商 + 密钥交换(KEX):双方列出各自支持的算法,按优先级协商出 KEX、主机密钥算法、加密算法、MAC 算法、压缩算法。通过 DH/ECDH/Curve25519 交换,派生出会话密钥。此阶段服务器用主机私钥对交换哈希签名,客户端据此验证服务器身份。
-
服务请求:客户端请求
ssh-userauth服务。 -
用户认证:见下节。
-
通道建立:进入连接协议,开启 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 | 高,适合大规模 |
- 点赞
- 收藏
- 关注作者
评论(0)