
公钥分发不是“复制粘贴”完事,而是密钥认证能否真正生效的关键环节。操作不当会导致连接失败、权限泄露甚至安全后门。核心就三点:公钥放对位置、权限设对、服务认得它。
选对算法,生成强密钥
别再用默认的 RSA 2048 或 DSA。ed25519 是当前最优选择——速度快、安全性高、密钥短小精悍。RSA 4096 可作为兼容性兜底方案。
- 推荐命令:
ssh-keygen -t ed25519 -C "user@prod-web-01",-C后加可识别的标识,方便后期管理多台机器 - 务必设置私钥密码(passphrase),这是防止私钥被盗后被滥用的最后一道防线
- 生成路径建议保留默认(
~/.ssh/id_ed25519),避免路径混乱引发代理或脚本识别问题
分发公钥:自动优先,手动兜底
ssh-copy-id 是最稳妥的一键部署工具,它自动创建 .ssh 目录、写入 authorized_keys、并设置正确权限(700 和 600),省去人为疏漏。
一款AI图像与设计工具,主要用于将文本渲染为图片并返回临时本地文件路径,支持可选的 data URI。适用于 Clawhub 或 Codex,用于将纯文本或带样式的文本进行转换,适合需要提升相关任务效率的用户。
- 标准用法:
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@192.168.1.10 - 若目标服务器禁用了密码登录但密钥尚未生效,需先用密码登录一次完成分发;或临时启用 PasswordAuthentication 完成过渡
- 手动方式(仅限无 ssh-copy-id 环境):
cat ~/.ssh/id_ed25519.pub | ssh user@host "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys"
验证与加固:让服务真正信任你
光有公钥文件还不够,SSH 服务端必须明确启用密钥认证,并关闭弱认证方式。
- 检查并编辑
/etc/ssh/sshd_config:-
PubkeyAuthentication yes(必须开启) -
PasswordAuthentication no(确认密钥可用后再关闭) PermitEmptyPasswords no-
StrictModes yes(强制校验目录和文件权限)
-
- 重启服务:
sudo systemctl restart sshd - 测试连接前,先用
ssh -v user@host查看详细日志,确认是否进入 publickey 认证阶段 - 首次连接时留意
known_hosts是否更新,避免中间人攻击误报
权限与清理:常被忽略的安全细节
哪怕公钥内容完全正确,错误的文件权限也会导致 SSH 拒绝读取——这是 Permission denied (publickey) 的最常见原因。
- 本地私钥:
chmod 600 ~/.ssh/id_ed25519(严禁 group/other 可读) - 远程
~/.ssh目录:chmod 700 - 远程
authorized_keys:chmod 600(不能是 644 或 755) - 定期清理过期密钥:从
authorized_keys中删除不再使用的公钥行,避免“密钥堆积”成为风险入口










