【问题标题】:Xcode 11 SPM authentication failed because no credentials providedXcode 11 SPM 身份验证失败,因为未提供凭据
【发布时间】:2020-01-29 15:06:36
【问题描述】:

我开始使用 Swift 包管理器,当我使用 https (https://github.com/Alamofire/Alamofire.git) 地址添加存储库时,当我尝试使用我的 github 帐户登录时,身份验证总是失败

Xcode authentication fail

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

【问题讨论】:

    标签: ios swift xcode git


    【解决方案1】:

    这是 git config 的问题。在 .gitconfig 文件中,它被设置为

    url.git@github.com.insteadOf "https://github.com/:

    删除此部分后 https 工作正常

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

    【讨论】:

    • 我可以确认这对我也有效,谢谢。我的一个问题是它何时/如何插入到 .gitconfig 文件中,或者 Xcode 何时/如何开始阻塞它?因为我没有更改它并且从 Xcode 11 GM 开始,它破坏了我所有使用 SPM 的构建。
    • 在我的例子中,它是由 go 自动插入的,因为 golang.org/doc/faq#git_https
    • 致那些正在搜索 git 配置文件的人。找到 .gitconfig 文件只在终端上写这个指令: git config --global --edit
    • 你是我的英雄!
    • 在 Xcode 12.4 上遇到了同样的问题,并且可以正常工作。谢谢。
    【解决方案2】:

    在我使用 Xcode 11.3.1 的情况下,我遇到了同样的问题,我解决了在 Xcode 上的 Github 帐户首选项中将 de auth 方法从 HTTPS 更改为 SSH。

    【讨论】:

      【解决方案3】:

      基于之前的两个答案,我通过 Abrahanfer 所做的事情解决了这个问题,将 Xcode Preferences -> Account 中的 Clone using 设置为 SSH

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

      【讨论】:

      • 这是正确的,如果你想在github上找到repo的SSH url,点击右上角的“使用SSH”(点击“克隆或下载”按钮后)跨度>
      【解决方案4】:

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

      【讨论】:

      • 这对我有帮助 ?
      【解决方案5】:

      我双击了错误消息Error while fetching remote repository: git@github.com:ORG/REPO-NAME.gitThe server SSH fingerprint failed to verify 在 Xcode 的 Report Navigator 中,然后出现一个弹出窗口,询问我是否要信任主机。点击之后,我就可以使用 SSH 添加 Swift 包了。

      在 Xcode Preferences 中选择 HTTPS 或 SSH 并没有解决我的问题,因为 Xcode 似乎自动处理 SPM 流程中的 SSH GitHub URL。

      【讨论】:

        【解决方案6】:

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

        【讨论】:

        • 如果我删除并尝试再次添加它,当我使用我的 github 帐户登录时,我会收到 xcode authentication failed because no credentials were provided error,我尝试删除它并再次添加它,但它仍然不起作用。我正在使用 Github Actions。
        【解决方案7】:

        对我来说,这似乎更像是一条红鲱鱼(可能是一位开发人员不小心签入了这个与项目设置中的 swift 包相关的小改动)。我去了项目设置,将其从“Swift Packages”下删除。之后就好了。

        【讨论】:

          【解决方案8】:

          我在 Xcode 12.0.1 (12A7300) 中一直遇到这个问题。

          即使我应用了上述所有建议,我的 GitHub 凭据似乎也不起作用。

          我修复它的方式(至少目前是这样)是切换到仅 SSH 身份验证

          【讨论】:

          • 那个设置在哪里?
          • @TommySadiqHinrichsen 不幸的是,它本身不是一个设置,而是在报告导航器中的日志中双击失败的身份验证错误时出现的对话框。它会问我如何使用 GitHub 进行身份验证,并且只有 SSH 选项。 升级到 Xcode 12.5.1 后,我再也没有遇到过这个问题
          【解决方案9】:

          我设法让 HTTPS 与 CI 一起正常工作。 bitrise 的解决方案是使用 'Authenticate host with netrc',然后 Xcode 将正确找到私有 HTTPS 存储库。我确信其他 CI 平台(或您自己的)可以设置相同的解决方案。

          【讨论】:

            【解决方案10】:

            通过源代码树添加 repo 并通过 Xcode 签出 repo 使用其他工具,然后通过 SPM 添加相同的 repo。尝试通过 rsa 密钥算法而不是 ed255189 密钥算法创建 SSH 密钥。 SPM 工具可以轻松地与rsa 配合使用。 注意:rsa 密钥认证比ed25519 密钥认证慢。

            【讨论】:

              【解决方案11】:

              我在这里关注了其他回答者,但没有成功。最终发现,这个包是用我在 https 域中的用户名添加到 XCode 中的,就像这样:

              https://yarden_k@bitbucket.org/private/package/path.git
              

              所以我不得不以同样的方式调整接受的答案(我将这些行添加到 .gitconfig 文件中):

              [url "git@bitbucket.org:"]
                  insteadOf = https://yarden_k@bitbucket.org/
              

              还有中提琴!它终于奏效了。弄清楚这一点真是令人头疼。

              【讨论】:

                【解决方案12】:

                我也面临这个问题

                检查你的 repo 访问权限是否正确,并且你有适当的权限来推送代码

                他们只给了我 READ 权限,在遇到这个问题后,我会通知相关人员并获得 WRITE 权限

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 1970-01-01
                  • 2019-09-11
                  • 2018-11-28
                  • 2020-07-22
                  • 2021-11-29
                  • 2019-04-26
                  • 2020-01-11
                  • 2019-07-29
                  相关资源
                  最近更新 更多