5月30日 20:53

SSH 公钥认证为什么更安全?如何正确配置?

SSH 公钥认证的核心不是“把公钥当密码”,而是服务器用公钥验证客户端是否持有对应私钥。登录时私钥不会离开本机,客户端只用私钥对服务器给出的挑战做签名;服务器拿 authorized_keys 里的公钥验签,通过才放行。相比密码认证,它更抗撞库,也更适合自动化。

追问

Ed25519、RSA、ECDSA 选哪个?

新环境优先 Ed25519,密钥短、速度快、安全边界清晰。需要兼容老系统时再考虑 RSA 4096。

私钥还需要密码短语吗?

需要,尤其是笔记本或开发机上的私钥。密码短语能在文件被复制走时多挡一层,配合 ssh-agent 使用也不会频繁输入。

authorized_keys 有公钥仍失败怎么办?

先查权限,目录或文件可写范围太大时 sshd 会拒绝使用。再用 ssh -vv 看客户端是否提供了对应私钥。

禁用密码认证前注意什么?

先确认至少有一个普通用户能用密钥登录,并保留当前会话。云主机还要确认控制台救援方式可用。

写段命令

bash
ssh-keygen -t ed25519 -C "deploy@company" -f ~/.ssh/id_ed25519_prod ssh-copy-id -i ~/.ssh/id_ed25519_prod.pub user@host chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys
标签:SSH