如何在不输入密码的情况下克隆私有组的 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 中找出正确的端口位置,但配置文件没有问题)。
在 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、