Gitlab - git clone 在 macOS 中使用 ssh 和 https 均失败

van*_*178 2 git github git-clone fatal-error gitlab

我的同事允许我以 Master 身份访问他的存储库,然后我使用 SSH 和 HTTPS 克隆它,但它总是失败:

GitLab: The project you were looking for could not be found.
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
Run Code Online (Sandbox Code Playgroud)

我一直在检查.pub文件中生成的公钥并已插入到我的 Gitlab 帐户中。而且我还尝试克隆一个存储库(来自其他所有者),并且可以正常工作!这很混乱。

我错过了什么吗?

小智 5

我遇到了同样的问题,我发现了多个问题。我不是这方面的专家,但这里总结了我为解决问题而采取的步骤。希望它会有所帮助:

解决HTTPS克隆问题:

  1. 克隆因上述错误而失败,并且没有在命令行上提示我输入用户名和密码。使用详细标志运行克隆

    git clone --progress --verbose https://[my_gitlab_server]/[repo]/[project].git

    显示 git 正在从 OSX 工具链中提取凭据,这显然是不正确的。我使用此处的说明禁用了此功能。

    sudo git config --system --unset credential.helper

  2. 我现在收到用户名和密码提示,但得到:

    远程:HTTP 基本:拒绝访问远程:您必须使用具有“api”范围的个人访问令牌,才能通过 HTTP 访问 Git。远程:您可以在https://[my_gitlab_server]/profile/personal_access_tokens生成一个 致命的:“ https://[my_gitlab_server]/[repo]/[project].git/的身份验证失败

    因此,我按照此处的说明创建了个人访问令牌。

  3. 我不确定如何处理令牌。事实证明,您可以将它包含在此处描述的 URL 中(对我来说看起来像git clone https://oauth2:[token]@[my_gitlab_server]/[project].git),或者您可以在命令行提示符处粘贴令牌以输入“密码”。

我现在可以通过 HTTPS 进行克隆。

解决SSH克隆问题:

SSH 克隆给出了与 HTTPS 克隆相同的错误。bash 代理的一些背景知识在这里很有帮助。

  1. 我在我的用户目录中找到了我的~/.ssh/config文件并验证了 repo 在那里有一个条目。

    Host [my_gitlab_server]/[repo] IdentityFile ~/.ssh/id_rsa2

  2. 我在 ssh 目录中有多个 id-rsa 文件,所以我打开了id_rsa2.pub(在配置文件中与我的 repo 相关联的那个)并通过导航到“SSH Keys”选项卡将它与我在我的 repo 中找到的密钥进行比较在我的“个人资料设置”中。钥匙是一样的。

    (如果您需要帮助创建和查看密钥,请参阅此处的文档。)

我的密钥已经到位,但我的 SSH 克隆仍然无法正常工作。

  1. 我认为配置文件可能有问题,或者我的密钥不再有效,因此我通过使用此处的说明手动将密钥添加到当前终端会话来绕过配置文件。

    eval $(ssh-agent -s) ssh-add ~/.ssh/id_rsa2

    这有效,所以我知道我的密钥是有效的。

    (顺便说一下,要查看加载到代理中的密钥运行ssh-add -L并查看它们的指纹运行ssh-add -l。)

现在的问题是,我需要使用的〜/ .ssh /配置文件,这样我就不用跑了eval,并ssh-add每次我打开一个新的终端窗口。

  1. 为了排除故障,我运行了ssh -Tvv git@[my_gitlab_server]它成功连接到我的 gitlab 服务器,但使用了我不认识的密钥。在输出中,我注意到没有搜索文件id-rsa2
  2. 使用来自 ssh.com 的有关密钥ssh_config 文件的信息,我发现/etc/private/ssh/ssh_config文件指定了使用哪些密钥。默认值为:

    IdentityFile ~/.ssh/id_rsa IdentityFile ~/.ssh/id_dsa IdentityFile ~/.ssh/id_ecdsa IdentityFile ~/.ssh/id_ed25519

    我通过运行sudo nano /private/etc/ssh/ssh_config并添加以下行来添加我的 id_rsa2 密钥:

    IdentityFile ~/.ssh/id_rsa2

这就像一个冠军。

总的来说,最好使用带有默认 id_rsa 名称的单个 ssh 密钥来避免此类问题。