如何修复 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 私钥文件权限过于开放的问题,确保安全可靠的连接。
发表评论 取消回复