You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

IntelliJ Idea拉取Git代码失败:Permission denied (publickey)求助

问题根源分析与解决思路

终端下Git操作完全正常,但IntelliJ IDEA里拉取代码报Permission denied (publickey),结合你给出的信息(SSH executable设为Native、密钥已加GitLab),问题大概率出在IDE的环境配置或代理适配差异上,而非GitLab或密钥本身(毕竟终端能正常工作)。下面是具体的排查方向和解决方法:

  • IDE未继承终端的SSH代理环境
    终端里你可能用了ssh-agent来管理密钥,并且已经把密钥添加到代理中,但IDE启动时没有继承终端的SSH_AUTH_SOCK环境变量,导致IDE找不到已加载的密钥。
    解决方法:直接从终端启动IntelliJ IDEA(比如Linux/macOS下执行idea.sh或open -a "IntelliJ IDEA.app",Windows下在PowerShell里运行IDE的启动脚本),这样IDE会自动继承终端的所有环境变量,包括SSH代理的配置。

  • IDE未正确读取你的SSH配置文件
    终端会自动加载~/.ssh/config里的配置(比如代理命令、指定密钥路径),但IntelliJ的Native SSH可能没正确加载这个文件。
    检查步骤:

    1. 打开File → Settings → Tools → SSH Configurations
    2. 确认是否勾选了Use system SSH configuration,或者手动添加对应GitLab主机的配置(比如指定私钥路径、ProxyCommand)
      另外,确保你的~/.ssh文件夹权限是700,私钥文件权限是600——权限过松会导致SSH拒绝使用密钥,IDE可能比终端更严格检查权限。
  • 代理配置在IDE和终端不一致
    终端通过OpenVPN走代理,但IDE的代理设置没同步,导致SSH连接无法正常通过代理访问GitLab。
    注意:Git的SSH协议需要用SOCKS代理或通过ProxyCommand转发,而IDE的HTTP代理设置对SSH连接无效。你需要:

    1. 确保~/.ssh/config里配置了正确的ProxyCommand(比如针对GitLab主机):
      Host gitlab.com
        ProxyCommand nc -x socks5://localhost:1080 %h %p
      
      (把socks5://localhost:1080换成你OpenVPN提供的代理地址)
    2. 确认IDE的Native SSH能读取这个配置(参考上面的SSH Configurations设置)
  • IDE运行用户与终端用户不一致
    比如你用管理员权限启动IDE,或者在多用户系统下用了不同用户运行IDE,导致IDE无法读取你当前用户的.ssh文件夹。解决方法就是用和终端相同的用户启动IDE,或者调整.ssh文件夹的权限让IDE用户能读取。


内容的提问来源于stack exchange,提问作者Ilya Berdzenishvili

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 06:22:55