Windows版OpenSSH报错:C:\Users\gary/.ssh/config权限或所有者异常
解决Windows OpenSSH "Bad owner or permissions on .ssh/config" 问题
我之前也踩过这个Windows OpenSSH的权限坑,跟你情况一模一样——用Git Bash跑了chmod 0600和chown完全没用,后来才搞明白:Windows版OpenSSH的权限校验根本不认POSIX那套,它只看NTFS文件权限体系!下面是亲测有效的解决步骤:
1. 彻底清理config文件的多余权限
- 右键点击
C:\Users\gary\.ssh\config,选属性 → 安全 → 高级 - 点击禁用继承,然后选择从此对象中删除所有继承的权限(这一步会把Administrators、SYSTEM这些默认权限全删掉,就是要这么干)
- 点击添加 → 选择主体,输入你的用户名
gary,点检查名称确认后添加 - 给
gary设置完全控制权限,一路确定保存
2. 同步修正.ssh目录的权限
同样的操作给.ssh目录来一遍:
- 右键
C:\Users\gary\.ssh→ 属性 → 安全 → 高级 - 禁用继承并删除所有继承权限
- 添加你自己的用户
gary,授予完全控制权限 - 确保这里没有其他用户(比如SYSTEM、管理员组)的访问权限,OpenSSH对目录权限的严格程度和文件一样
3. 用命令行快速设置(嫌图形界面麻烦的话)
直接用Windows自带的icacls命令一键搞定:
icacls "C:\Users\gary\.ssh" /inheritance:r /grant:r gary:F icacls "C:\Users\gary\.ssh\config" /inheritance:r /grant:r gary:F
参数解释:
/inheritance:r移除所有继承的权限/grant:r gary:F给用户gary授予完全控制权限,覆盖现有设置
4. 重启OpenSSH服务生效
最后别忘了重启服务,让权限变更生效:
net stop sshd net start sshd
为啥之前的chmod没用?因为Windows版OpenSSH只是兼容了POSIX权限的语法,但实际校验逻辑还是绑定NTFS权限的——哪怕sshd用Local System运行,它校验config文件时还是会以你的用户身份检查,必须确保只有你自己能碰这个文件和目录才行。
内容的提问来源于stack exchange,提问作者gary69
相关产品推荐
相关产品推荐

