使用VS Code SSH扩展后,命令提示符无法SSH的解决求助
解决Windows下SSH因config文件权限报错的问题
Windows自带的OpenSSH对.ssh目录及其中文件的权限要求非常严格,必须确保只有当前用户拥有完全控制权限,不能存在其他用户(如管理员组、Everyone)的权限条目——这就是你遇到Bad owner or permissions错误的核心原因,VS Code SSH扩展生成config文件时可能继承了父目录的宽松权限,导致命令行SSH校验不通过。
不用删除config文件,按以下方法修复权限即可:
图形界面操作步骤
- 打开文件资源管理器,找到
C:\Users\bellz\.ssh目录 - 右键点击
config文件,选择「属性」→「安全」选项卡 - 点击「高级」按钮,在弹出的窗口中点击「更改权限」
- 删除所有非当前用户(bellz)的权限条目,比如「Administrators」「Everyone」这类
- 添加当前用户权限:点击「添加」→「选择主体」,输入
bellz后点击「检查名称」确认,再点击「确定」 - 给bellz用户设置「完全控制」权限,应用到该文件
- 重复上述步骤检查
.ssh目录的权限,确保同样只有bellz用户拥有完全控制权限 - 保存所有设置后,重新打开命令提示符执行SSH
命令行快速修复
如果图形界面操作麻烦,也可以用icacls命令直接修改权限,打开命令提示符执行以下两条命令:
icacls "C:\Users\bellz\.ssh\config" /inheritance:r /grant:r bellz:(F) icacls "C:\Users\bellz\.ssh" /inheritance:r /grant:r bellz:(F)
命令说明:
/inheritance:r:移除文件/目录继承的所有权限/grant:r bellz:(F):仅给bellz用户赋予完全控制权限
注意:如果之前用管理员身份打开过VS Code,可能会导致config文件的所有者变成管理员,这时候需要先在文件属性的「安全」→「高级」→「所有者」中把所有者改成bellz,再调整权限。
内容的提问来源于stack exchange,提问作者bellz
相关产品推荐
相关产品推荐

