← [ BACK_TO_NOTES ]

专题归档 · 2026 年 3 月(编辑分组,非实际写作日期)

Windows SSH 报 Bad permissions:原来私钥文件的 ACL 也会被检查

Windows 本地 SSH 私钥被拒绝时的权限排查:继承、当前用户和不同终端执行命令的区别。

#blog

第一次遇到 Windows SSH 客户端提示私钥的 Bad permissions,直觉容易放在远端服务器:是不是 SSH 端口、用户名或密钥本身出了问题?

这类报错实际值得先检查本机的私钥文件访问控制列表(ACL)。SSH 不希望保存登录凭据的文件对过多用户或群组开放,因此会拒绝加载权限不合要求的私钥。

Windows 不是简单的 chmod 600

在 Linux 里,很多教程会让人执行 chmod 600 key.pem。但 NTFS 文件通常采用 ACL 和继承机制。复制文件、从压缩包解压或移动到共享目录后,可能出现额外的用户/组读取权限。

原 Note 研究过通过 Windows 的 icacls 检查和修正私钥权限,并特别标记了一个容易踩的细节:CMD 和 PowerShell 在变量展开、引号与命令语法上并不完全相同。直接把某篇教程里的命令从一个 Shell 粘到另一个 Shell,可能连 ACL 都没有按预期设置。

应该先验证什么

  • 当前 SSH 客户端实际读取的是哪一份密钥文件;
  • 文件所在目录和文件本身有哪些允许读取的主体;
  • 权限来自继承,还是显式授权;
  • 修正后权限清单是否符合只让预期账户读取的原则;
  • 如果 SSH 仍然失败,是否已经转成远端 authorized_keys、账户或网络问题。

这次排障让我意识到,认证失败不一定要先从服务器端查起。遇到 Bad permissions,先核对本机文件 ACL,再检查远端密钥授权,更容易缩小范围。

创建于 2026/3/4 更新于 2026/10/17
Digital Biome
Access

键盘导航

j / k / ↑ / ↓
选择对象
Enter / o
打开选择
/ 或 Ctrl+K
全站搜索
i / f / 1–4
筛选当前列表
g → h / l / p / t / a
首页 / 笔记 / 项目 / 工具 / About
r → 1–9
打开所选对象的关联
u
返回上一页
Esc
关闭浮层 / 取消命令;输入框内清空文本