5月30日 20:53
SSH 公钥认证为什么更安全?如何正确配置?
SSH 公钥认证的核心不是“把公钥当密码”,而是服务器用公钥验证客户端是否持有对应私钥。登录时私钥不会离开本机,客户端只用私钥对服务器给出的挑战做签名;服务器拿 authorized_keys 里的公钥验签,通过才放行。相比密码认证,它更抗撞库,也更适合自动化。
追问
Ed25519、RSA、ECDSA 选哪个?
新环境优先 Ed25519,密钥短、速度快、安全边界清晰。需要兼容老系统时再考虑 RSA 4096。
私钥还需要密码短语吗?
需要,尤其是笔记本或开发机上的私钥。密码短语能在文件被复制走时多挡一层,配合 ssh-agent 使用也不会频繁输入。
authorized_keys 有公钥仍失败怎么办?
先查权限,目录或文件可写范围太大时 sshd 会拒绝使用。再用 ssh -vv 看客户端是否提供了对应私钥。
禁用密码认证前注意什么?
先确认至少有一个普通用户能用密钥登录,并保留当前会话。云主机还要确认控制台救援方式可用。
写段命令
bashssh-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