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 10 和 PuTTY 身份验证代理(使用受密码保护的 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 Configuration
s)
因此,创建或编辑您的 SSH
config
(例如 Mac:~/.ssh/config
)以包含例如
Host <domain>
User git
IdentityFile ~/.ssh/<your private SSH key file, usually `id_...`>
然后会让 WebStorm 接收 git
remote
的 domain
并提示您输入配置的 SSH 密钥/SSH 配置项的密码。
(记得替换上面标有<placeholder>
的占位符)。
【讨论】:
【参考方案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-add
是C:\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。
ssh -T git@github.com
测试连接。
更新 1:您的问题git@github.com:<b>/</b>username/repository_name
似乎有一个错字。注意第一个斜线。我不确定它是否有问题。
更新 2: 检查您的 Git 凭据保存在您的 IntelliJ IDEA 中 File -> Settings -> Version Control -> GitHub
更新3:你也可以分享到GitLab,只需添加一个遥控器,例如运行命令git remote add gitlab <url>
。
【讨论】:
如何在 IntelliJ 中输入“git remote show -n origin”? @Lockna 在主窗口底部有一个Terminal
。使用顶部菜单栏VCS -> Git -> Remotes...
也可以。以上是关于IntelliJ,无法在 GitHub 上共享项目(权限被拒绝)的主要内容,如果未能解决你的问题,请参考以下文章
Intellij Idea导入项目时无法生成Artifacts
使用 GitHub 开源项目申请 IntelliJ License