繁体   English   中英

IntelliJ IDEA git 权限被拒绝(公钥)

[英]IntelliJ IDEA git Permission denied (publickey)

我在 Windows 10 上的 IntelliJ IDEA 上使用 git 时遇到了一个奇怪的问题。如果我想访问 GitLab 上的远程存储库,我总是得到Permission denied (publickey) 我在这里或通过谷歌找到的一切都没有解决问题。 我试过:

  1. 将 ssh 可执行文件设置为 Native
  2. 将我的公钥从 Putty 转换为 ssh-keygen 样式
  3. 删除known_hosts

我还尝试使用Git Bash访问存储库,它可以正常工作。 另一个有趣的事实是,在删除 known_hosts 后,我得到“主机密钥验证失败”。 我不得不使用 Git Bash 重新创建 known_hosts 条目,之后我再次收到 Permission denied 错误。 不知何故,我没有被要求提供任何用户输入。

我在从 Intellij 2019.2 连接 bitbucket 云时遇到了这个问题,幸好通过以下步骤得到了解决。 请注意,这些步骤将在您成功生成并添加 ssh-public 密钥到您的 bitbucket/github/gitlab 配置文件后执行。

  1. 打开 Git-SCM 安装目录中的 Git-SCM ssh_config文件。它在 Windows 中的默认位置(对于 64 位)在 C:\\Program Files\\Git\\etc\\ssh\\
  2. 将以下行添加到 ssh_config
Host *your-gitlab-or-github-or-bitbucket-hostname*
IdentityFile *your-ssh-rsa-privatekey-file-with-absolute-path*

例如

Host bitbucket.org
IdentityFile C:/Users/Sahil/.ssh/id_rsa

来源: https : //intellij-support.jetbrains.com/hc/en-us/community/posts/360004124959-IntelliJ-2019-1-3-Can-t-access-git-using-SSH-keys

自 OP 以来已经很久了,但这是我基于执行的解决方案:

  1. 您需要打开提示并设置 ENVVAR GIT_SSH_COMMAND
  2. 您需要从同一提示打开 IntelliJ。

示例:

> set GIT_SSH_COMMAND=ssh -i C:\\path\\to\\not\\default\\key
> idea

此外,not-default-key 的路径应该使用~而不是 %userprofile% 或使用/的类似 unix 的路径。

更新 IDEA 2020.3

Sahil 的答案中的错误已得到修复,并且对于一台或多台主机的一个密钥的最常见情况,在 ssh 配置文件中正确输入不需要 Christian 的解决方案。 复杂配置的其他选项,例如同一或多个主机的多个密钥,可以在超级用户的 Maddes 综合回答中找到。

ssh-agent 和 ssh-add 之间的任何不一致都会导致某些事情起作用而某些事情不起作用的情况。

例如,我运行了 Windows OpenSSH 代理,但我的路径首先指向 Windows ssh-add的 Git。 鉴于存在许多 ssh 实现,许多此类失败都是可能的,因此要知道您知道事情是从哪里运行的。

要让 ssh 在 IDEA 中工作...


适用于 Windows 的 Git

  1. 安装适用于 Windows 的 Git。 我将它放在 C:\\Git 中,因为作为没有提升安装的标准用户,我无法写入C:\\Program Files
  2. Control Panel | User Accounts | Change my environment variables Control Panel | User Accounts | Change my environment variables Control Panel | User Accounts | Change my environment variables将 Git usr\\bin文件夹添加到cmd文件夹条目之后的路径中(例如C:\\Git\\usr\\bin用于我的安装)。
  3. 如果您设置了环境变量 HOME(就像我为 Git 所做的那样)将其删除; IDEA 如果设置就会中断(整个星期都在与 JetBrains 支持一起工作)。
  4. 在 Windows cmd.exe 控制台中,运行 start-ssh-agent.cmd 以启动代理
  5. 在 IDEA 中Settings | SSH Configurations | Authentication type: Settings | SSH Configurations | Authentication type: Settings | SSH Configurations | Authentication type:将其设置为Key pair OpenSSH or PuTTY并测试您的连接。 然后,做一个小改动并测试Commit and push...

视窗 OpenSSH

  1. Control Panel | User Accounts | Change my environment variables Control Panel | User Accounts | Change my environment variables Control Panel | User Accounts | Change my environment variablesC:\\Windows\\System32\\OpenSSH到您的路径。 确保路径中没有其他 ssh 实现位于此之前!
  2. Task Manager | Services启动 OpenSSH 代理Task Manager | Services Task Manager | Services (或任何数量的其他方式)
  3. 将您的 IDEA SSH Configuration为上面的 #5

请记住,在 Windows 上,IDEA 中的 ssh 使用标准 Windows 命令行控制台 (cmd.exe) 中可用的环境。 如果 git 操作在那里工作,那么通过上述步骤,它们将在 IntelliJ 中工作。

我遇到了同样的问题,虽然它确实与公钥有关,但我的问题与 WSL2/Linux 和 windows .ssh 文件夹有关。 我的密钥在我的 WSL2/linux 文件夹系统中,但 intelliJ 正在我的 windows 文件夹系统中查找。

我将我的 rsa 密钥从 WSL2 复制到 Windows,它会自动工作。 事实上,我试图通过从 Windows 文件夹中删除密钥来让它再次失败,但是 intelliJ 必须有它自己的 keylocker 解决方案,因为即使没有 Windows .ssh 文件夹中的密钥,intelliJ 也继续工作。

有关解释它的屏幕截图,您可以在此处查看https://vimeo.com/558267383/74d55415c4

如果你像我一样在 Clion 中使用 wsl2,只需添加

Host github.com
        IdentityFile /home/yieatn/.ssh/github

到 /home/user/.ssh/config (如果不退出则创建)。 您甚至不必重新启动 IDE。

添加到Cristian Torres的回答中:

对于在Mac OSX上遇到类似问题的所有人:

  1. 在 IntelliJ、PyCharm 等中,单击Tools -> Create Command-line Launcher...

  2. 打开终端并执行:

$ export GIT_SSH_COMMAND="ssh -i ~/.ssh/your-custom-private-key"
$ idea

对于 PyCharm,可执行文件名称是charm/usr/local/bin/charm

Goland: goland/usr/local/bin/goland

WebStorm: webstorm/usr/local/bin/webstorm

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM