SSH连接严格遵循五阶段握手:协议版本协商、密钥与算法协商、双向身份认证、会话请求、交互会话;结合非对称加密(用于身份验证与密钥交换)和对称加密(用于高效业务数据传输),依托TCP/IP协议栈自上而下协同工作。
从协议栈一层层往下拆,比死记命令有效得多。
SSH 不是凭空跑的,它依赖整个网络协议栈:应用层(SSH)→ 传输层(TCP)→ 网络层(IP)→ 链路层(以太网/WiFi)。比如你敲 ssh [email protected],实际过程是:
每次连接不是一上来就输密码,而是严格按五个阶段推进:
~/.ssh/known_hosts 是否存过这个指纹光读文档容易飘,建议边连边观察:
tcpdump -i any port 22 抓包,Wireshark 打开看 SYN / ACK / 数据载荷加密前后的变化sudo sed -i 's/#LogLevel INFO/LogLevel DEBUG3/' /etc/ssh/sshd_config && sudo systemctl restart sshd,然后 sudo tail -f /var/log/auth.log
-v 参数:如 ssh -v user@host,能看到每个阶段的具体动作和密钥协商细节SSH 安全不是玄学,核心是两套加密配合:
ssh-keygen -t ed25519 -C "me@home",再用 ssh-keygen -l -f ~/.ssh/id_ed25519.pub 看公钥指纹,和 known_hosts 里存的比对