SSH 的原理是什么?
SSH 使用加密协议如 Diffie-Hellman 和 AES 来确保远程连接的机密性和完整性。
SSH(Secure Shell)是一种用于在网络通信中提供加密连接的网络协议,主要用于远程登录、命令执行和文件传输。它通过加密机制保护数据的机密性、完整性和认证安全性。以下是 SSH 的工作原理解释,参考相关源:
- 协议基础
- SSH 运行在客户端/服务器模型之上。
- 它替代不安全协议如 Telnet 或 FTP,通过加密通道确保所有数据传输防窃听和篡改。
- 连接建立阶段
- TCP 连接建立(TCP Connection):
- 客户端向服务器的默认端口22 发起TCP连接请求。
- 服务器响应并确认连接建立。
- 协议版本交换(Version Exchange):
- 客户端和服务器交互SSH版本号(通常为 SSH2),以协商兼容的协议和加密算法。
- TCP 连接建立(TCP Connection):
- 密钥交换阶段(Key Exchange)
- 使用非对称加密算法(如 Diffie-Hellman,RSA 或 ECDSA),客户端和服务器共同生成一个临时的共享秘密密钥。
- 目的是为后续通信建立对称会话密钥,该密钥不会在网络上传输明文形式。
- 例如,Diffie-Hellman过程:
- 双方生成数学序列通过公钥交互确认身份,最终对称密钥在本地计算生成。
- 身份验证阶段(Authentication)
- 服务器认证(Host Authentication):
- 服务器发送主机公钥给客户端。
- 客户端验证公钥是否在本地信任文件(如
~/.ssh/known_hosts
)中匹配。# Example verification during SSH connect
- 用户认证(User Authentication):
- 密码认证(Password Based)(基于用户输入):
- 方式简单但不安全。
- 公钥认证(Public Key):
- 客户端用私钥签名一个随机数或信息发送给服务器,后者用存储的公钥验证权限(比密码更安全)。
- 配置示例生成密钥并部署密钥。
- 其他如证书认证可选。
- 密码认证(Password Based)(基于用户输入):
- 服务器认证(Host Authentication):
- 数据加密传输阶段
- 一旦认证通过:
- 客户端和服务器端通信的所有数据均使用对称算法(如 AES)自动加密。
- 会话密钥作为种子保证信息在通信通道中的完整性。
- 一旦认证通过:
- 会话终止
- 用户操作结束后协议协商关闭。
综上,SSH通过建立端到端的加密管道简化安全远程通信,在前后端领域特别适用于服务器管理和部署工具的操作。其流程避免了中间人攻击(MITM),强调协议在工程开发中用于远程访问的关键实践。