SSH浅析
一、简介
SSH(Secure Shell) 是一种加密的网络协议,用于在不安全的网络(如 Internet)上安全地访问、管理和传输数据到远程计算机。主要用于替代传统的 Telnet、rlogin、rsh 等明文传输协议,避免敏感数据(如密码、命令)被窃听或篡改。SSH 有两个主要版本:
- SSH-1(已不推荐使用)
存在多项安全漏洞(如会话密钥回收攻击),早期实现中加密算法和认证机制较弱。 - SSH-2(RFC 4250~4256 定义,IETF 标准)
引入更强的加密算法(AES、ChaCha20 等)、更安全的密钥交换协议(Diffie–Hellman、ECDH)、多通道复用等,是目前的主流版本。
二、 层次划分
2.1 传输层(Transport Layer Protocol,RFC 4253)
- 主要功能:提供加密、数据完整性校验、防止重放攻击,确保客户端与服务器之间的机密通信。
- 核心过程:
- 协商协议版本:客户端与服务器首先交换支持的 SSH 协议版本(如
SSH-2.0-OpenSSH_8.9
)。 - 算法协商:双方交换支持的加密算法、MAC 算法、压缩算法列表(如 AES-256-GCM、HMAC-SHA2-256)。
- 密钥交换(Key Exchange):常用算法有 Diffie–Hellman(DH)、椭圆曲线 Diffie–Hellman(ECDH),生成会话密钥。
- 建立加密通道:所有后续数据都通过该通道加密传输。
- 协商协议版本:客户端与服务器首先交换支持的 SSH 协议版本(如
2.2 身份验证层(User Authentication Protocol,RFC 4252)
- 主要功能:验证客户端(用户)是否有权访问服务器。
- 常用身份验证方法:
- 密码认证(Password Authentication):用户输入密码,客户端加密后发送,服务器验证。
- 公钥认证(Public Key Authentication):客户端持有私钥,服务器保存公钥,利用数字签名验证身份(安全性高,推荐)。
- 主机认证(Host-based Authentication):基于客户端主机的公钥,适用于可信网络内部。
3. 连接层(Connection Protocol,RFC 4254)
- 主要功能:在已加密且认证通过的 SSH 会话上复用多个逻辑通道。
- 支持的通道类型:
- 交互式 shell 会话(如
ssh user@host
进入终端) - 远程命令执行(
ssh user@host command
) - 端口转发:
- 本地转发(Local Forwarding):将本地端口映射到远程服务
- 远程转发(Remote Forwarding):将远程端口映射到本地服务
- 动态转发(Dynamic Forwarding):充当 SOCKS 代理
- 子系统(Subsystem):如 SFTP(安全文件传输)
- 交互式 shell 会话(如
三、工作原理
总结
SSH 提供的核心功能:
- 安全的远程登录(Secure Remote Login)
- 安全的文件传输(如 SFTP、SCP)
- 端口转发(Port Forwarding / Tunneling)
- 命令执行(Remote Command Execution)
- 加密的应用数据通道
SSH 的优点:
- 安全性高:采用强加密算法和完整性校验
- 功能丰富:不仅支持远程登录,还可文件传输、端口转发、代理等
- 可扩展性:支持自定义认证方式和加密算法
- 跨平台:支持 Linux、macOS、Windows(如 OpenSSH、PuTTY)