Xcode 11 SPM认证失败,因为未提供凭据。

52

我开始使用Swift Package Manager,当我添加一个带有https地址(https://github.com/Alamofire/Alamofire.git)的库时,当我尝试使用我的GitHub帐户登录时,身份验证总是失败。

Xcode身份验证失败

但如果我使用git@github.com:Alamofire/Alamofire.git,它将被成功添加。 我尝试重新生成新的密钥,删除了.ssh目录,但没有任何办法让https工作,我仍然会收到xcode身份验证失败的错误,因为没有提供凭据。 我可以在本地使用ssh URL,但在CI中需要使用https

14个回答

143

这是一个关于git配置的问题。在.gitconfig文件中设置了

[url "git@github.com:"]
    insteadOf = https://github.com/

移除该部分后,https正常工作。

编辑:如评论所述,您可以使用命令在终端中轻松访问您的gitconfig:git config --global --edit


2
我可以确认这对我也起作用了,谢谢。我有一个问题是,这是什么时候/如何插入到.gitconfig文件中的,或者Xcode是什么时候/如何开始对其进行限制的?因为我没有更改它,并且从Xcode 11 GM开始,它破坏了所有使用SPM的构建。 - Ben Stahl
2
在我的情况下,这是由于Go自动插入的,因为它遵循了https://golang.org/doc/faq#git_https的规定。 - rpecka
8
对于那些正在寻找git配置文件的人,只需在终端上执行以下命令即可找到.gitconfig文件:git config --global --edit - Shoaib Bagwan
2
你是我的英雄! - Ilya
1
在Xcode 12.4上遇到了同样的问题,但已经解决了。谢谢。 - NaXir
显示剩余10条评论

18

在我的情况下,使用 Xcode 11.3.1 时遇到了相同的问题,并通过在 Github 帐户首选项中将身份验证方法从 HTTPS 更改为 SSH 来解决。

输入图像描述


13

对我来说有效的方法是@SimonasDaniliauskas的回答@Abrahanfer的回答

基本上,在命令行中我需要运行:

git config --global --unset-all url.git@github.com:.insteadof

在Xcode中,我需要进入“Xcode”>“首选项”,并将我的GitHub切换为使用SSH。
顺便说一下,如果你还没有设置SSH,请参考这篇medium post或这些GitHub directions。如果你需要更改你的SSH密钥,请参考这个YouTube tutorial

9

在之前两个答案的基础上,我通过像Abrahanfer那样设置 Xcode 首选项 -> 帐户 中的 Clone usingSSH 来解决了这个问题。

然后我使用了仓库的 SSH url,例如:git@github.com:AppPear/SwiftUI-PullToRefresh.git


1
如果您想在GitHub上找到存储库的SSH URL,请按“使用SSH”位于右上角(在您按下“克隆或下载”按钮后)。这是正确的方法。 - itsmcgh

7
您可以使用ssh URL来替代https,例如:git@github.com:ORG_NAME/REPO_NAME.git

帮助了我。 - Paul T.

4

我双击了错误信息Error while fetching remote repository: git@github.com:ORG/REPO-NAME.git或者The server SSH fingerprint failed to verify在Xcode的Report Navigator中,然后弹出一个窗口询问是否信任主机。点击确认后,我就能够使用SSH来添加Swift Package。

在Xcode首选项中选择HTTPS或SSH对我来说都没有效果,因为Xcode似乎会自动处理SPM流程中的SSH GitHub URL。


2
如果您遇到了这个问题,而且您的.gitconfig文件如下,并且您希望保留它!
[url "git@github.com:"]
  insteadOf = https://github.com/

在您的.gitconfig文件中,在上述两行代码后添加以下两行代码。
[url "https://github.com/apple"]
  insteadOf = https://github.com/apple

复制以上两行代码,将其中的 /apple 替换为你想要从中下载软件包的任何其他 /user/org

0

尝试将其删除并重新添加。如果这样不起作用,请从Xcode中删除您的GitHub帐户。通常,通过SSH使用git效果更好。您在使用什么CI?


2
如果我删除并尝试重新添加,当我使用我的Github帐户登录时,会出现“xcode身份验证失败,因为未提供凭据错误”。我尝试将其删除并再次添加,但仍然无法正常工作。我正在使用Github Actions。 - Simonas Daniliauskas

0

我成功地在CI中实现了HTTPS。解决方案是使用bitrise的“使用netrc对主机进行身份验证”,然后Xcode将正确地找到私有的HTTPS仓库。我相信其他CI平台(或您自己的)也可以设置相同的解决方案。


0

通过 SourceTree 添加仓库并通过 Xcode 检出仓库使用其他工具,然后通过 SPM 添加相同的仓库。尝试使用 rsa 密钥算法创建 SSH 密钥,而不是 ed255189 密钥算法。SPM 工具可以舒适地使用 rsa。 注意:与 ed25519 密钥身份验证相比,rsa 密钥身份验证较慢。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接