如何在不输入密码的情况下克隆私有组的 GitLab 存储库?

How to clone private group's GitLab repository without typing password?

在 GitLab 中,我拥有一个组,在这个组中我有一个私有存储库。 url 看起来像这样:https://gitlab.com/groupname/reponame.

在我的机器上,我有一个 ssh 密钥对 id_rsa_gitlab & id_rsa_gitlab.pub。 我在 GitLab 设置中添加了 public 键。我在 ~/.ssh/config:

中添加了以下代码
# GitLab.com
Host gitlab.com
  PreferredAuthentications publickey
  IdentityFile ~/.ssh/id_rsa_gitlab

我已经使用 ssh -T git@gitlab.com as in the docs.

测试了通信是否有效

现在,我想克隆我组的私人仓库。但不幸的是,none 无需手动输入我的 GitLab 用户名和密码(不是 SSH 密钥的密码,而是我的 GitLab 帐户的密码)即可工作。

# Asks for username and pass and then clones successfully
git clone https://gitlab.com/group/repo  
git clone https://gitlab.com/group/repo.git
git clone https://git@gitlab.com/group/repo
git clone https://<myGitLabUser>@gitlab.com/group/repo

# Asks only for password and then clones successfully
git clone https://<myGitLabUser>@gitlab.com/group/repo.git

# Asks only for password and then fatal: Authentication failed for '...'
git clone https://git@gitlab.com/group/repo.git

# fatal: repository '...' does not exist
git clone git@gitlab.com/group/repo  
git clone git@gitlab.com/group/repo.git 
git clone <myGitLabUser>@gitlab.com/group/repo
git clone <myGitLabUser>@gitlab.com/group/repo.git

我做错了什么?这不可能吗?

看来,根据 this answer,您可以在两种 urls

之间进行选择
  • 要么有架构,ssh://git@gitlab.com/group/repo.git 在这种情况下
  • 或“类似scp”,无模式,git@gitlab.com:group/repo.git (example from gitlab docs)

您只能选择其中之一,混合使用很可能会导致问题(这就是 ssh urls 所发生的问题)。

另请注意,如果您更喜欢 scp-like urls 并且您必须指定端口,您可能希望将端口放入 .ssh/config 文件而不是 url、(我个人没能直接在 url 中找出正确的端口位置,但配置文件没有问题)。