Windows SSH报错:'private-key权限过宽',如何调整私钥权限?
哈哈,这个问题我太熟了!之前在Windows 7上用OpenSSH连EC2也踩过这个权限的坑,Linux用chmod搞定的事,Windows得换两种思路来弄,给你详细说下:
方法1:图形界面修改(适合不想敲命令的朋友)
- 找到你的
private-key.pem文件(你提到的ppm应该是笔误啦),右键点击它选择「属性」 - 切换到「安全」标签页,点击「编辑」按钮进入权限设置界面
- 点击「添加」,输入你的Windows用户名(格式比如
你的电脑名\你的用户名),点击「检查名称」确认无误后添加 - 选中刚刚添加的用户,在「允许」列里只勾选「读取」权限,其他所有权限都取消勾选
- 删除列表里的其他所有用户/组(比如Administrators、Users这类),确保只有你自己的用户拥有读取权限
- 依次点击「确定」保存所有设置,之后再尝试连接EC2应该就能成功了
方法2:命令行快速搞定(高效省心)
打开命令提示符(CMD)或者PowerShell,先切换到私钥文件所在的目录,然后执行以下两条命令:
icacls private-key.pem /inheritance:r icacls private-key.pem /grant:r "%USERNAME%":R
简单解释下这两条命令:
/inheritance:r:移除文件所有继承的权限,避免其他用户组通过继承获得访问权限/grant:r "%USERNAME%":R:给当前登录的用户授予仅读取的权限,R就是读取权限的标识
额外注意点
- 一定要确保私钥文件名正确,别把
pem写成ppm啦,不然命令会找不到文件 - Windows 7上的OpenSSH 7.6对私钥权限的要求和Unix系一致:私钥只能被当前用户读取,任何其他用户都不能有访问权限,这是SSH的安全机制要求
- 如果还是连接失败,可以再检查下权限设置是否生效,或者重启下OpenSSH服务试试
内容的提问来源于stack exchange,提问作者Sabrina




