一、SSH 是什么
SSH(Secure Shell,安全外壳协议),是应用层加密协议,基于TCP,默认端口 22。
SSH 最核心作用:在不安全的网络上,提供加密、安全的远程主机访问。
早年远程管理使用 Telnet,Telnet 所有数据明文传输,账号密码很容易被抓包窃听;SSH 的出现就是为了解决明文通信的安全问题。
简单一句话:SSH 就是加密版的远程登录协议,同时附带文件传输能力。
二、SSH 的核心能力
- 远程命令登录:登录远程服务器,执行命令(最常用)
- 文件传输:内置 SFTP(SSH文件传输协议),替代不安全的FTP
- 端口转发(隧道):支持本地端口转发、远程端口转发、动态SOCKS代理,把流量封装在SSH加密通道内传输
注意:SFTP 属于 SSH 协议体系,不是FTP协议,上一篇FTP有提到。
三、SSH 连接建立流程
SSH 连接分为两大阶段:版本协商与密钥交换阶段 → 用户认证阶段
阶段1:版本协商 + 密钥交换(建立加密会话)
- 客户端发起TCP连接到服务器22端口;
- 双方交换SSH协议版本号,确认版本兼容;
- 密钥交换算法协商(如 ECDH),生成会话密钥;
- 会话密钥是对称加密密钥,仅本次会话有效;
- 整个过程不会在网络传输会话密钥,防止被窃听;
- 服务器把自己的主机公钥发给客户端;
- 客户端第一次连接时,会提示:确认服务器主机指纹;
- 客户端保存主机公钥,后续连接用来校验服务器身份,防止中间人攻击;
- 协商加密算法、哈希算法,完成加密通道建立。
从这一步之后,后续所有通信数据全部加密。
阶段2:用户身份认证
加密通道建立完成后,客户端进行身份验证,常见两种认证方式:
- 密码认证(Password)
输入账号密码,密码在加密隧道内传输。
优点:简单;缺点:容易暴力破解,生产环境一般不推荐。 - 密钥认证(Publickey,推荐)
客户端生成一对密钥:私钥(保存在本机,绝对不能泄露) + 公钥
将公钥上传到服务器(~/.ssh/authorized_keys)
认证流程:- 服务器随机生成一段挑战字符串,发给客户端;
- 客户端使用本地私钥对字符串签名;
- 服务器使用预先保存的客户端公钥验证签名;
- 验证通过,登录成功,全程不传输私钥。
生产环境最佳实践:关闭密码登录,只开启密钥认证。
四、SSH 加密体系:对称加密 & 非对称加密分工
很多人容易混淆两者在SSH中的作用:
- 非对称加密(RSA/ECDSA)
- 作用:身份认证、协商会话密钥
- 特点:加解密速度慢,不适合传输大量业务数据。
- 对称加密(AES等)
- 作用:加密真正的业务流量(命令、输出、文件)
- 特点:速度快,适合大量数据传输。
分工总结:非对称加密用来“握手和验身份”,对称加密用来“加密传输数据”。
五、SSH 三大功能详解
1. 远程终端登录
ssh username@server-ip
登录服务器,交互式执行命令,所有输入输出加密。
2. SFTP 文件传输
sftp username@server-ip
依托SSH加密通道上传、下载、管理文件。
对比FTP:SFTP只需要22一个端口,加密,防火墙配置简单,现在运维首选。
3. SSH 端口转发(隧道)
- 本地端口转发:把远程机器的端口映射到本地,访问本地端口等价访问远程端口;
- 远程端口转发:把本地端口暴露到远程服务器;
- 动态转发(SOCKS代理):建立SOCKS5代理,浏览器等程序可以走SSH加密通道访问网络。
六、常见 SSH 相关文件(Linux)
~/.ssh/id_rsa:客户端私钥~/.ssh/id_rsa.pub:客户端公钥~/.ssh/known_hosts:保存已经连接过的服务器主机公钥指纹~/.ssh/authorized_keys:服务器端,存放允许登录的客户端公钥
七、SSH 优缺点
✅ 优点
- 通信全程加密,抵御窃听;
- 支持强密钥认证,安全性远高于 Telnet / FTP;
- 单端口22,同时支持远程命令、SFTP、端口转发;
- 跨平台:Linux、macOS、Windows都支持。
❌ 缺点
- 密钥管理有成本,私钥一旦泄露,攻击者可以直接登录;
- 配置不当依然存在安全风险(例如:密码登录、弱密码);
- 加密会带来微小性能开销(绝大多数场景可忽略)。
八、SSH vs Telnet vs FTP 快速对比
| 协议 | 端口 | 是否加密 | 用途 |
|---|---|---|---|
| SSH | 22 | ✅加密 | 远程登录、SFTP文件传输 |
| Telnet | 23 | ❌明文 | 老式远程登录,现已淘汰 |
| FTP | 21 | ❌明文 | 文件传输,双连接 |
九、小结
- SSH 应用层协议,TCP 22端口,核心是提供加密安全远程访问;
- 连接分两步:密钥交换建立加密通道 → 用户认证;
- 非对称加密负责身份校验与密钥协商,对称加密传输业务数据;
- 两种认证方式:密码认证(不安全)、密钥认证(推荐);
- SFTP是SSH子功能,不是FTP,优先使用SFTP代替FTP。
思考题:SSH第一次连接服务器提示确认主机指纹,这个步骤是用来防范什么攻击?
0 条笔记