IntelliJ,无法在 GitHub 上共享项目(权限被拒绝)

Posted

技术标签:

【中文标题】IntelliJ,无法在 GitHub 上共享项目(权限被拒绝)【英文标题】:IntelliJ, unable to share Project on GitHub (Permission Denied) 【发布时间】:2019-05-31 00:08:44 【问题描述】:

我是 Git 和 GitHub/GitLab 的新手。我尝试将我的项目分享到 GitHub,但它抛出了这个异常:

Can't finish GitHub sharing process
        Successfully created project 'LiveGame1' on GitHub, but initial push failed:
        git@github.com: Permission denied (publickey).
        Could not read from remote repository.
        Please make sure you have the correct access rights
        and the repository exists.

我还可以通过 Internet 链接克隆存储库,但不能通过“git@github.com:/username/repository_name”。

如何解决此错误,我能否将我的项目直接分享到 GitLab?

【问题讨论】:

这个存储库是你的吗? 我可以克隆每个公共存储库,但我尝试分享我的一个项目,但它抛出了这个异常 我只想知道,你当前仓库的git remote url中显示的用户(可能是HTTPS方式https://github.com/<user>/<repo>.git,或者SCP方式git@github.com:<user>/<repo>.git),你自己还是你的组织,还是其他人? 是的,它是我的仓库和我的用户名 要将新项目添加到 github,同时在 github 上创建新存储库,请不要选择 Initialize this repository with a README。这可能是解决方案,因为我曾经遇到过同样的问题。 【参考方案1】:

我通过运行 cat ~/.ssh/id_rsa.pub 命令解决了这个问题,复制了结果并在 Github/settings/ssh 和 gpg 密钥中添加了“新 ssh 密钥”并将结果粘贴到那里并保存 然后再次运行“git push -u origin main”,它工作了。

【讨论】:

【参考方案2】:

这里有很多建议 How to solve Permission denied (publickey) error when using Git? 和这里 Git gives me a “Permission Denied” error when writing files that I am pulling 取决于操作系统。

对于 IntelliJ 中的 Windows 上的我来说,解决方案是这里提到的解决方案: Can't access git using SSH keys.

我在 git-Installation 中编辑了 ssh_config-文件,IntelliJ 将其与源主机一起使用并且一切正常。

文件例如:

C:\Program Files\Git\etc\ssh\ssh_config

在文件中更改例如:

Host bitbucket.org
    IdentityFile C:\Users\User\.ssh\id_ssh

编辑:正如评论中提到的(对于 Linux),在 Windows 上也可以在您的本地用户主目录中添加一个配置文件:C:\Users\<USER>\.ssh\config,上面提到的主机名。如果您使用多个 git 安装或无权访问(由于缺少管理员权限)您的 git 安装,这可能是更好的解决方案。

【讨论】:

对于我在 Linux 上的情况是一样的。添加到 ~/.ssh/config:Host github.com IdentityFile ~/.ssh/my_public_key.pub 有趣的是,在普通终端中我不必这样做。我必须这样做才能让 Intellij 终端与 Github 存储库进行通信。【参考方案3】:

我正在使用 Windows 10PuTTY 身份验证代理(使用受密码保护的 SSH 密钥),这对我有用 - 适用于我上传我的 Bitbucket 和 Github 帐户SSH 密钥。

在 Intellij 中集成“SSH”密钥的步骤 -

    打开“PuTTYgen”应用程序。 点击“文件 > 加载私钥”。 从目录中选择您的 .ppk 文件。 点击“转换 > 导出 OpenSSH 密钥”。 使用“id_rsa”名称将文件保存在“C:\Users\(您的用户名)\.ssh”文件夹中。 打开 Intellij。 点击“文件 > 设置”。 展开“版本控制”。 展开“颠覆”。 点击“SSH”。 选择“私钥”单选按钮。 选择存储在“C:\Users\(您的用户名)\.ssh”文件夹中的生成文件。 点击“确定”按钮。

测试配置:点击“VCS > Git > Fetch”。如果“获取成功” 消息显示,您的配置成功

来源:https://intellij-support.jetbrains.com/hc/en-us/community/posts/360000011270-How-to-set-up-git-SSH-keys-?page=1#community_comment_360001445600

【讨论】:

【参考方案4】:

我可以分享关于 WebStorm 的类似情况和答案。

我之前为另一个 SSH 密钥存储了一个密码,我添加了一个新密钥(不要忘记 ssh-agent -s,如果在例如 Mac 上)但 WebStorm 没有接受它。

WebStorm 中没有为即将出现的错误消息提供上下文,遗憾的是它是来自git 的通用消息:

Push failed

<project>: git@<domain>: Permission denied (publickey).

Could not read from remote repository.
                    
Please make sure you have the correct access rights
and the repository exists.

正如several、several issues 在 JetBrains 的 IntelliJ 跟踪器和/或论坛(他们把我带到这里)上提到和链接的那样,WebStorm(我假设 IntelliJ 也是如此)使用你的 SSH 配置dotfile 在引擎盖下。这意味着使用本机 ssh 客户端(在以前的版本中,Settings » Version Control » git » SSH Executable to "native")或使用配置(Settings » Tools » SSH Configurations)

因此,创建或编辑您的 SSH config(例如 Mac:~/.ssh/config)以包含例如

Host <domain>
    User git
    IdentityFile ~/.ssh/<your private SSH key file, usually `id_...`>

然后会让 WebStorm 接收 git remotedomain 并提示您输入配置的 SSH 密钥/SSH 配置项的密码。

(记得替换上面标有&lt;placeholder&gt;的占位符)。

【讨论】:

【参考方案5】:

这篇文章帮助我在我的 Windows 10 机器上解决问题:

https://richardballard.co.uk/ssh-keys-on-windows-10/

注意:文章第一部分的标题应为“在 Windows 中启用 SSH Client”,并应参考获取 SSH Client > 启用,而不是服务器。

如果您可以在不提示您输入密码的情况下让ssh -T git@github.com 工作,如上述文章中所述,那么您就可以从 IntelliJ 推送。

关键是:

获取在 Windows 中运行的 OpenSSH 身份验证代理服务 确保被调用的ssh-addC:\Windows\System32\OpenSSH 中提供的那个 确保 git 也配置为使用 Windows 提供的 ssh:

git config --global core.sshCommand "'C:\Windows\System32\OpenSSH\ssh.exe'"

使用ssh-keygen 生成密钥时,请考虑使用此处描述的 ecdsa 算法:https://www.ssh.com/ssh/keygen/

同样重要的是清理任何其他试图在 Windows 之外进行 ssh 的东西(比如 Putty)。我在尝试运行 ssh-add 时一直面临“格式无效”的一个问题,我相信这是由我的路径上正在使用的另一个 ssh-add 程序引起的,而不是 Windows 附带的 OpenSSH 程序。

【讨论】:

对我来说,将配置添加到 ssh_config 是可行的。我也必须取消设置,否则会引发错误git config --global core.sshCommand "'C:\Windows\System32\OpenSSH\ssh.exe'"【参考方案6】:

我遇到了同样的问题,我在 github 帐户中为 intelliJ 生成了公钥。

设置 -> 开发者设置 -> 个人访问令牌

然后通过提供必要的范围和描述为 intelliJ 生成一个新令牌。并复制令牌密钥

然后在 intelliJ 中选择通过令牌访问登录。通过在显示的表单中粘贴密钥登录。

谢谢

【讨论】:

【参考方案7】:

这个问题太笼统了。需要更多细节来澄清。

运行git remote show -n origin(假设你在分支origin-n标志意味着“不查询远程”,这减少了Web请求的操作时间。),你可能会看到远程URL。

在许多常见情况下,例如在 GitHub 上,Git URLs 采用 HTTPS 协议

https://github.com/<user>/<repo>.git

或 SSH 协议

git@github.com:<user>/<repo>.git

如果user 字段不是您或您的组织之一,那么您似乎试图为某人的存储库做出贡献。请fork 和create a pull request 这样做。您可能需要使用命令更改本地 repo 的远程 url

git remote set-url <branch> <newurl>

如果user是你,那么检查你是否正确输入了token。

如果您使用的是 HTTPS 协议,请检查您输入的用户名和密码。您可能需要查看Git Credentials。 如果您使用的是 SSH 协议,请确保您有从您的计算机到 GitHub 的相应 SSH 密钥。您可以使用命令ssh -T git@github.com 测试连接。

更新 1:您的问题git@github.com:<b>/</b>username/repository_name 似乎有一个错字。注意第一个斜线。我不确定它是否有问题。

更新 2: 检查您的 Git 凭据保存在您的 IntelliJ IDEAFile -&gt; Settings -&gt; Version Control -&gt; GitHub

更新3:你也可以分享到GitLab,只需添加一个遥控器,例如运行命令git remote add gitlab &lt;url&gt;

【讨论】:

如何在 IntelliJ 中输入“git remote show -n origin”? @Lockna 在主窗口底部有一个Terminal。使用顶部菜单栏VCS -&gt; Git -&gt; Remotes...也可以。

以上是关于IntelliJ,无法在 GitHub 上共享项目(权限被拒绝)的主要内容,如果未能解决你的问题,请参考以下文章

Intellij Idea导入项目时无法生成Artifacts

将IntelliJ IDEA项目传上传至Gitee上

使用 GitHub 开源项目申请 IntelliJ License

在 Intellij 中的项目之间共享数据库

解决IntelliJ IDEA导入本地项目不能切换github容器的问题

IntelliJ IDEA 13.1.16 配置获取上传Github项目