5月30日 21:21
SSH 协议是如何建立安全连接的?
SSH 不是“把密码加密后发给服务器”这么简单。它先通过 TCP 连接到服务端 22 端口,双方确认协议版本和可用算法,再用密钥交换算法协商出临时会话密钥;后续真正传输命令、文件和端口转发数据时,主要靠对称加密保证速度,靠 MAC 或 AEAD 保证完整性。服务器会拿出自己的主机公钥证明“我就是你上次连过的那台机器”,客户端再用密码、公钥或键盘交互完成用户认证。
追问
为什么 SSH 既用非对称加密又用对称加密?
非对称加密适合身份验证和安全协商,但计算成本高,不适合持续传输大量数据。SSH 用它安全商量密钥,之后切到 AES、ChaCha20 这类对称算法。
known_hosts 文件有什么用?
known_hosts 记录服务器主机公钥指纹,用来发现你是否连到了同一台服务器。生产环境指纹突然变化,要先确认是否重装、迁移或被中间人劫持。
公钥登录比密码登录安全吗?
通常更安全,因为私钥不需要发到网络上,服务端只验证签名结果。边界是私钥文件必须有口令和合理权限。
SSH 能防住所有中间人攻击吗?
前提是客户端正确校验服务器主机指纹。第一次连接就接受了伪造指纹,SSH 也无法凭空知道对方是假的。
写段配置
configPasswordAuthentication no PermitRootLogin no AllowUsers deploy PubkeyAuthentication yes