IDEA 连接远程服务器 SSH 时报错密钥权限过高怎么解决?

文章导读
IDEA 连接远程服务器 SSH 时报错“密钥权限过高”,通常是本地私钥文件权限设置过宽导致的。SSH 客户端出于安全机制会拦截此类密钥,修改本地密钥文件权限为仅所有者可读即可解决。
📋 目录
  1. 命令速用版
  2. 为什么会这样
  3. 分步处理
  4. Windows 原生环境命令行修复方案
  5. 怎么验证是否生效
  6. 常见坑
A A

IDEA 连接远程服务器 SSH 时报错“密钥权限过高”,通常是本地私钥文件权限设置过宽导致的。SSH 客户端出于安全机制会拦截此类密钥,修改本地密钥文件权限为仅所有者可读即可解决。

先说结论:这是本地 SSH 客户端的安全机制拦截,并非服务器拒绝,调整本地文件权限就能恢复。

  • 先确认:找到 IDEA 配置中使用的私钥文件在本地磁盘的具体路径。
  • 先处理:Linux/macOS 使用 chmod 600;Windows 原生使用 icacls 命令移除继承并授权当前用户。
  • 再验证:重新在 IDEA 中测试 SSH 连接,观察报错是否消失。

命令速用版

假设你的私钥文件路径是 ~/.ssh/id_rsa (Linux/macOS) 或 C:\Users\YourName\.ssh\id_rsa (Windows)。

Linux/macOS 终端:

IDEA 连接远程服务器 SSH 时报错密钥权限过高怎么解决?
chmod 600 ~/.ssh/id_rsa

Windows PowerShell/CMD:

icacls "C:\完整\路径\to\key" /inheritance:r /grant "%USERNAME%:R"

为什么会这样

SSH 协议规定私钥文件必须严格保密。如果其他用户(组用户或世界用户)有读取或写入权限,SSH 客户端会认为密钥已泄露,拒绝使用它进行认证。IDEA 内置的 SSH 实现遵循这一标准,当检测到权限过高(例如 644 或 755)时,会抛出权限过高警告并中断连接。

分步处理

  1. 定位密钥文件:打开 IDEA,进入 Settings > Build, Execution, Deployment > DeploymentTools > SSH Configurations,查看配置的 Key file 路径。
  2. 修改权限(Linux/macOS):打开终端,执行 chmod 600 /完整/路径/to/key
  3. 修改权限(Windows 原生):以管理员身份打开 PowerShell 或 CMD,执行 icacls 命令移除继承权限并仅授予当前用户读取权(详见下文命令行修复方案)。
  4. 重启连接:在 IDEA 的 SSH 配置页面点击 Test Connection。

Windows 原生环境命令行修复方案

Windows 文件系统权限机制与 Linux 不同,图形界面操作复杂且容易遗漏系统权限,导致 SSH 仍报错。推荐使用命令行精确控制。

步骤:

IDEA 连接远程服务器 SSH 时报错密钥权限过高怎么解决?
  1. 找到私钥文件的完整路径,例如 D:\keys\my_server_key
  2. 打开 PowerShell 或 CMD(建议右键以管理员身份运行)。
  3. 执行以下命令(替换路径为实际路径):
icacls "D:\keys\my_server_key" /inheritance:r /grant "%USERNAME%:R"

命令解释:

  • /inheritance:r:禁用继承并移除所有继承的权限。
  • /grant "%USERNAME%:R":仅授予当前登录用户读取权限(R)。

执行成功后会显示“成功处理了 1 个文件”。

怎么验证是否生效

点击测试连接后,IDEA 底部状态栏或弹窗不再显示 Permissions too openUNPROTECTED PRIVATE KEY FILE 字样,且能成功列出远程目录或建立会话。

常见坑

  • WSL 文件系统:如果密钥放在 Windows 盘符挂载到 WSL 的目录中,chmod 可能不生效,建议将密钥存放在 WSL 原生文件系统(如 ~/)中。
  • 复制粘贴导致权限重置:从别处复制密钥文件到新位置时,系统可能会赋予默认权限(如 644),每次复制后需重新检查权限。
  • IDEA 缓存:极少数情况下,修改权限后 IDEA 仍报错,尝试重启 IDEA 清除内部 SSH 缓存。
  • Windows 路径空格:如果文件路径包含空格,在使用 icacls 命令时必须用双引号包裹路径。