Appearance
SSH:远程登录与安全隧道基础
SSH(Secure Shell)是最常用的远程管理协议之一。它解决的核心问题很直接:
- 在不可信网络上,如何安全地登录远程主机。
- 如何在传输过程中保证机密性、完整性与身份可信。
- 如何把本地端口和远端服务安全地“打通”。
1. SSH 到底做了什么
和明文传输的远程协议不同,SSH 在连接建立时会协商加密算法并完成密钥交换,之后所有会话内容都在加密通道中传输。
一个典型 SSH 会话可以拆成三步:
- 客户端与服务端协商算法(加密、MAC、密钥交换)。
- 完成主机身份验证,防止中间人攻击。
- 用户身份认证(密码、公钥等),认证成功后建立会话。
2. 最常用的三种认证方式
| 方式 | 安全性 | 适用场景 |
|---|---|---|
| 密码认证 | 中等 | 临时登录、测试环境 |
| 公钥认证 | 高 | 生产环境、自动化部署 |
| 证书认证 | 很高 | 大规模主机统一管理 |
建议
生产环境优先使用公钥认证,并禁用密码登录与 root 直登。
3. 你最常用的几个 SSH 命令
bash
# 登录远程主机
ssh user@192.168.1.10
# 指定私钥登录
ssh -i ~/.ssh/id_ed25519 user@server
# 本地端口转发:把本地 8080 转到远端 127.0.0.1:80
ssh -L 8080:127.0.0.1:80 user@server
# 远程端口转发:把远端 9090 转到本地 3000
ssh -R 9090:127.0.0.1:3000 user@server4. 常见面试追问
- 为什么第一次连接 SSH 会提示主机指纹。
known_hosts文件的作用是什么。- SSH 隧道转发和 VPN 有什么差异。
- 为什么推荐
ed25519而不是旧的rsa。