如何修复 SSH 私钥文件权限过于开放的问题

当你尝试使用 SSH 连接服务器时,如果遇到以下错误提示:

 "私钥文件权限太开放,导致 SSH 客户端拒绝使用这个私钥进行连接"

这说明你的私钥文件权限设置不正确。为了确保 SSH 客户端能够正常使用私钥进行连接,你需要确保私钥文件只有你自己可以读取和写入。本文将详细介绍在 Windows 和 Windows Subsystem for Linux (WSL) 环境下修正文件权限的方法。

在 Windows 上修正文件权限

步骤一:打开命令提示符(CMD)或 PowerShell

1. **按 `Win + R`** 打开运行对话框。

2. 输入 `cmd` 或 `powershell`,然后按 `Enter` 键打开命令提示符或 PowerShell。

步骤二:使用 `icacls` 命令修正权限

假设你的私钥文件路径是 `D:\你目录\SSH\bt.ybb.press_id_ed25519`,请执行以下命令:

1. **移除继承的权限**:


icacls "D:\你目录\SSH\bt.ybb.press_id_ed25519" /inheritance:r


此命令会移除文件从上级目录继承的权限。

2. **仅允许当前用户完全控制**:


icacls "D:\你目录\SSH\bt.ybb.press_id_ed25519" /grant:r "%username%:F"
     如果username没取到使用:


icacls "D:\你目录\SSH\bt.ybb.press_id_ed25519" /grant "$env:USERNAME`:F"


 `%username%` 是一个环境变量,代表当前登录的用户名。此命令会授予当前用户对该文件的完全控制权限。

3. **移除 Everyone 权限**:


icacls "D:\你目录\SSH\bt.ybb.press_id_ed25519" /remove "Everyone"


此命令会移除 `Everyone` 组对该文件的所有权限。

示例命令:

假设用户名为 `JohnDoe`,实际命令执行可能如下:



icacls "D:\你目录\SSH\bt.ybb.press_id_ed25519" /inheritance:r
icacls "D:\你目录\SSH\bt.ybb.press_id_ed25519" /grant:r "%username%:F"
icacls "D:\你目录\SSH\bt.ybb.press_id_ed25519" /remove "Everyone"



在 Windows 上使用 WSL 修正文件权限

如果你在使用 Windows Subsystem for Linux (WSL),可以使用 Linux 命令修正权限。具体步骤如下:

步骤一:打开 WSL 终端

1. **按 `Win + R`** 打开运行对话框。

2. 输入 `wsl`,然后按 `Enter` 键打开 WSL 终端。

步骤二:执行 `chmod` 命令修正权限

假设你的私钥文件路径是 `/mnt/d/你目录/SSH/bt.ybb.press_id_ed25519`,请执行以下命令:


chmod 600 /mnt/d/你目录/SSH/bt.ybb.press_id_ed25519


此命令会将文件权限设置为只有文件拥有者可以读取和写入,即 `-rw-------`。

示例命令:

实际命令执行可能如下:


chmod 600 /mnt/d/JohnDoe/SSH/bt.ybb.press_id_ed25519


连接服务器

修正权限后,再次尝试通过 SSH 连接服务器:


ssh bt


如果私钥文件权限正确且 SSH 配置无误,你应该能够成功连接到服务器而不需要输入密码。

确保你的私钥文件权限仅允许你自己读取和写入,这样才能被 SSH 客户端接受。你可以使用 Windows 的 `icacls` 命令或 WSL 下的 `chmod` 命令来修正权限。通过本文的详细步骤,希望你能顺利解决 SSH 私钥文件权限过于开放的问题,确保安全可靠的连接。

点赞(0)

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部