ssh公钥文件(如id_rsa.pub)不应设为600,而应设为644;必须设为600的是客户端私钥(如~/.ssh/id_rsa)、服务端authorized_keys文件及identityfile指定的私钥。

SSH 公钥文件(如 id_rsa.pub、id_ed25519.pub)本身不需要也不应该设为 600 权限。600 是私钥和 authorized_keys 的权限要求,而公钥设计上就是可公开分发的——它不涉及身份冒用风险,因此通常应设为 644(所有者读写,组和其他用户只读)。
哪些文件必须设为 600?
真正需要严格限制为 600 的是以下三类敏感文件:
-
客户端私钥文件:如
~/.ssh/id_rsa、~/.ssh/id_ed25519或自定义路径的私钥(如~/keys/deploy_key)。OpenSSH 客户端在加载时会强制校验,权限宽于 600(如 644、755)将直接报错:"Permissions are too open" -
服务端授权密钥文件:即
~/.ssh/authorized_keys。该文件列出了允许登录的公钥,若被篡改或覆盖,可能引入未授权访问。StrictModes 启用时,sshd 会拒绝读取权限非 600 的该文件 -
服务端 SSH 配置中指定的 IdentityFile(若为私钥):例如
IdentityFile /etc/keys/admin.key,只要它是私钥,就必须是 600
为什么公钥不能设 600?
公钥本质是“锁的模具”,可安全共享。设为 600 反而可能引发协作问题:
一款AI视频创作工具,主要用于蛙蛙写作辅助AI写文,帮助获取创意灵感,提供拆书、小说转剧本、视频生成等功能,是一款功能全面的AI智能写作工具,适合需要提升相关任务效率的用户。
- CI/CD 流水线中,部署脚本需读取公钥上传至远程服务器;若权限为 600,非属主用户(如 Jenkins 用户)无法读取,导致失败
- 团队协作时,其他成员需查看或验证公钥指纹,600 权限会阻断常规
cat或ssh-keygen -lf操作 - OpenSSH 对公钥文件无权限强制检查,设为 644 不影响连接功能,且符合最小权限原则中的“合理开放”逻辑
正确设置权限的操作清单
执行以下命令即可完成关键路径加固:
- 修复私钥权限:
chmod 600 ~/.ssh/id_ed25519(或对应私钥路径) - 修复授权文件权限:
chmod 600 ~/.ssh/authorized_keys - 设置 .ssh 目录权限:
chmod 700 ~/.ssh(禁止组和其他用户进入) - 设置公钥权限(推荐):
chmod 644 ~/.ssh/id_ed25519.pub - 确保所有权正确:
chown $USER:$USER ~/.ssh ~/.ssh/*(避免 root 生成后普通用户无法使用)
常见误操作与排查提示
遇到免密登录失败时,优先检查以下几点:
- 运行
ssh -Tvvv user@host,观察日志中是否出现 "UNPROTECTED PRIVATE KEY FILE!" 或 "Authentication refused: bad ownership or modes" —— 这两类错误分别指向私钥权限错误和服务端 StrictModes 拒绝 - 不要对
~/.ssh/known_hosts强制设 600;它默认由 SSH 自动管理,设为 644 即可 - Windows 用户无法用 chmod,需通过文件属性 → 安全 → 高级 → 禁用继承 + 删除非属主条目来等效实现 600 效果










