一聚教程网:一个值得你收藏的教程网站

热门教程

服务器远程连接底层原理如何学

时间:2026-08-11 07:42:49 编辑:袖梨 来源:一聚教程网

SSH连接严格遵循五阶段握手:协议版本协商、密钥与算法协商、双向身份认证、会话请求、交互会话;结合非对称加密(用于身份验证与密钥交换)和对称加密(用于高效业务数据传输),依托TCP/IP协议栈自上而下协同工作。

从协议栈一层层往下拆,比死记命令有效得多。

先搞懂 TCP/IP 四层怎么协作

SSH 不是凭空跑的,它依赖整个网络协议栈:应用层(SSH)→ 传输层(TCP)→ 网络层(IP)→ 链路层(以太网/WiFi)。比如你敲 ssh [email protected],实际过程是:

  1. TCP 先在本地和服务器之间建连接(三次握手),端口默认是 22
  2. IP 层负责把数据包从你的电脑路由到目标服务器,中间可能经过多个网关
  3. 链路层最终把数据封装成帧,通过网线或无线信号发出去
  4. SSH 协议本身只在应用层“说话”,但它全程靠下三层托着走

重点吃透 SSH 的五阶段握手

每次连接不是一上来就输密码,而是严格按五个阶段推进:

  1. 版本协商:客户端和服务端先确认都支持 SSH-2.0
  2. 密钥交换:用 Diffie-Hellman 或 ECDH 协商出一个临时会话密钥(对称加密用)
  3. 服务端身份验证:服务器把自己的公钥指纹发给客户端,客户端检查 ~/.ssh/known_hosts 是否存过这个指纹
  4. 用户认证:支持密码、公钥、键盘交互等多种方式,公钥登录时,客户端用私钥签名一段随机数,服务端用公钥验签
  5. 会话建立:认证成功后,所有后续命令、输出都用会话密钥加密传输

动手抓包 + 对照日志看真实流程

光读文档容易飘,建议边连边观察:

  1. tcpdump -i any port 22 抓包,Wireshark 打开看 SYN / ACK / 数据载荷加密前后的变化
  2. 服务端开启详细日志:sudo sed -i 's/#LogLevel INFO/LogLevel DEBUG3/' /etc/ssh/sshd_config && sudo systemctl restart sshd,然后 sudo tail -f /var/log/auth.log
  3. 客户端加 -v 参数:如 ssh -v user@host,能看到每个阶段的具体动作和密钥协商细节

别跳过加密机制的实操理解

SSH 安全不是玄学,核心是两套加密配合:

  1. 非对称加密(RSA/ECDSA/Ed25519)只用于初始身份认证和密钥交换,不传业务数据
  2. 对称加密(AES-256-GCM、chacha20-poly1305)才真正加密每一条命令和返回结果,效率高且防篡改
  3. 可以手动生成密钥对:ssh-keygen -t ed25519 -C "me@home",再用 ssh-keygen -l -f ~/.ssh/id_ed25519.pub 看公钥指纹,和 known_hosts 里存的比对

热门栏目