今天我已将我的私人 github 存储库移至新创建的组织(我是该组织的所有者)。我已将远程源更改为 [email protected]:organization/repo.git。我无法推送到远程,因为我收到错误消息
错误:MyGithub用户名对organization/repo.git的权限被拒绝。
致命:无法从远程存储库读取。
请确保您拥有正确的访问权限并且存储库存在。
我已检查我的帐户是否是组织的所有者并且存储库存在。
按照 atom/github #1010.422882361中的建议禁用第三方应用程序访问限制。
我今天遇到了这个问题,实际上正如 Ephelon Dantzler 所建议的那样,禁用第 3 方访问限制解决了这个问题。
但是,我不太喜欢这个解决方案,所以我开始阅读文档。在 About OAuth App access reistrictions 页面上,Github 提到启用第 3 方限制将会阻止:
2014 年 2 月之前创建的 SSH 密钥将立即失去对组织资源的访问权限(这包括用户和部署密钥)。
我在那之前就已经创建了密钥,所以我只是创建了一个新的 SSH 密钥并按照 他们的说明添加到了 Github。
此后,即使启用了第 3 方访问限制,我也能够与组织的私有存储库进行交互。
我设法找到了答案。也许我做错了什么,或者可能是因为 github 问题,但即使我被声明为 Organization 的所有者,我也只有读取存储库的权限。我无法更改自己的权限,因为“您无法更改所有者的权限”。我将所有成员的权限更改为管理员,因为现在我是组织中唯一的一名成员,所以这没什么大不了的。
我发现这个问题的解决方案是创建一个 P.A.T(个人访问令牌),并在推送到存储库时用它代替我的密码。
创建 P.A.T 的方法是:
Github.com >登录>设置>开发人员设置>个人访问令牌>生成新令牌。我选择了令牌的所有选项,然后复制生成的令牌,并在要求我输入凭据时将其用作密码。
这花了我几个小时才弄清楚,这非常令人沮丧。我希望这些信息可以帮助其他人!
使用 GitHub Desktop..我遇到了一个奇怪的错误,我是组织的所有者,也是我组织的存储库的存储库管理员(我拥有完整的权限)。我决定进入命令行,然后从那里推送(输入“git push”),然后修复了它! 它推送了,我现在可以再次从 GitHub Desktop 推送。 奇怪,但希望对某人有帮助!
对我来说,设置和我的钥匙一切都很好。然而,Github Desktop 无法向远程推送(甚至从远程获取),因为它不信任 IP 地址。为了查找和修复,我切换到 CLI 并运行:
git fetch
回复了
The authenticity of host 'github.com (140.82.114.4)' can't be established.
RSA key fingerprint is SHA256:<long string>.
Are you sure you want to continue connecting (yes/no)?
因此揭示了这个问题。要么 Github 更改了他们的 IP,要么我没有在我的新机器上连接到这个存储库(使用旧密钥)。回复
yes
将 IP 添加到我的 .ssh/known_hosts
,然后 Github Desktop 再次正常工作。
Warning: Permanently added 'github.com,140.82.114.4' (RSA) to the list of known hosts.
所以我最近使用 2018 年生成的 SSH 密钥遇到了这个问题,Ephelon Grey 的答案为我指明了正确的方向。我的个人 SSH 密钥由 SourceTree 添加到 GitHub,并且 SourceTree 不是我的组织页面上的授权第三方应用程序。因此,使用该 SSH 密钥授权的推送将被拒绝。我只需授予第三方对组织上 SourceTree 的访问权限,现在我可以推送到其中包含的存储库。
对我有用的解决方案是这里。
前往
https://github.com/organizations/<orgname>/settings/oauth_application_policy
制定政策
Policy: No restrictions