GitLab git 用户密码

63

我刚刚安装了GitLab。

我创建了一个项目,名为project-x。

我创建了几个用户,并将其分配给该项目。

现在我尝试克隆:

 git clone git@192.168.0.108:project-x.git

它提示我输入密码。

我应该使用什么密码?


确保您已经设置了SSH密钥:https://gitlab.boulder.webroot.com/help/ssh/README#generating-a-new-ssh-key-pair - Mac_W
21个回答

52

与当前场景不严格相关。有时候当您被要求输入密码时,是因为您添加了错误的起源格式(HTTPS而不是SSH)

HTTP(S)协议通常用于具有强用户名和密码的公共存储库
SSH身份验证更常用于内部项目,您可以通过ssh密钥文件和简单密码短语进行身份验证。
GitLab用户更可能使用 SSH 协议

使用以下操作查看远程信息

git remote -v
如果你看到 HTTP(S) 地址,这是将其改为SSH的命令:
git remote set-url origin git@gitlab.my_domain.com/example-project.git

1
git remote set-url origin git@gitlab.com:user/project.git将远程仓库的地址更改为 git@gitlab.com:user/project.git - philippinedev
2
这是我的问题。谢谢。 - Henry
2
在GitLab中,存储库位置的下拉菜单有SSH和HTTPS选项。我之前使用的是HTTPS表单,这意味着我需要输入密码。根据上面的说明,改用SSH表单解决了这个问题。 - Henry
谢谢,兄弟。我浪费了一个小时才明白为什么它一直要求输入密码。 - George G

41

它提示我输入密码。

这不应该出现。
如果你有代表已被授权访问project-x的用户的正确公钥/私钥,那么GitLab就不会要求你输入任何内容。

但这假设首先ssh -vT git@192.168.0.108是有效的。


1
当我运行这个脚本时,它也提示了我输入密码。 - Alvin
@KevFixx 这意味着你本地客户端的ssh配置不正确:你在哪个操作系统上执行这个命令?Unix?Windows? - VonC
客户端为 Windows。服务器为 Linux。 - Alvin
8
@KevFixx 你需要修复哪个配置才能让你的 SSH 正常工作?请简明扼要地描述。 - VonC
我也遇到了同样的问题。看起来Tortoise git在克隆时提示输入密码,而通过git bash克隆则没有这个问题。很奇怪。 - Andy Dufresne

14

1
我的解决方案不同。我发现了一个/home/git/.ssh/authorized_keys.lock文件。删除这个文件后,一切都正常工作了。 - Shumin Guo
1
在服务器端还是客户端? - user5819540

6
在GitLab中添加新的SSH密钥后,检查你是否在SSHD的AllowGroups(对于Debian为/etc/ssh/sshd_config)中包括"git"组。如果没有,请将其添加并重新启动sshd (systemctl restart ssh)。
按照上面建议的方式使用ssh -vT git@192.168.8.2进行测试。

这对我在运行在CentOS上的本地GitLab服务器上有效。 - an4s
我也同意这个观点。我的问题也是sshd_config中缺少了一些条目。非常感谢! - D Cro

4

为了增加另一个原因到列表中...在我的情况下,我发现这个问题是由服务器上的SELinux权限问题引起的。如果您的服务器正在运行Fedora/CentOS/Red Hat,则值得检查。要测试此方案,您可以运行:

客户端:ssh -vT git@<gitlab-server> — 请求密码
服务器sudo setenforce 0
客户端:ssh -vT git@<gitlab-server> — 成功
服务器sudo setenforce 1

在我这里,gitlab/git用户的authorized_keys文件具有错误的SELinux文件上下文,并且ssh服务被拒绝读取它的权限。我在服务器端按如下方式解决了这个问题:

sudo semanage fcontext -a -t ssh_home_t /gitlab/.ssh/
sudo semanage fcontext -a -t ssh_home_t /gitlab/.ssh/authorized_keys
sudo restorecon -F -Rv /gitlab/.ssh/

我随后在客户端成功地执行了 git clone


1
它对我有效。我从CentOS 7备份了GitLab并恢复到CentOS 8。GitLab看起来一切正常,直到我运行git fetch。我花了6个小时检查SSH,重新安装系统和GitLab,直到我尝试了你的答案。非常感谢你! - SubmarineX

4
我的问题在于我在DNS中设置了gitlab.example.com的记录指向我的负载均衡器。所以当我尝试使用命令ssh git@gitlab.example.com时,实际上连接到了错误的机器。
我在~/.ssh/config文件中添加了一条记录:
Host gitlab.example.com
    Hostname 192.168.1.50

浪费了很多时间...


4

当我使用4096位的密钥时,遇到了同样的问题:

$ ssh-keygen -t rsa -C "GitLab" -b 4096
$ ssh -vT git@gitlabhost
...
debug1: Offering public key: /home/user/.ssh/id_rsa
debug1: Authentications that can continue: publickey,password
debug1: Trying private key: /home/user/.ssh/id_dsa
debug1: Trying private key: /home/user/.ssh/id_ecdsa
debug1: Next authentication method: password
git@gitlabhost's password:
连接被主机关闭

但是,使用2048位的密钥(默认大小),在将新公钥添加到用户的gitlab ssh密钥后,ssh会连接到gitlab而无需提示输入密码:

$ ssh-keygen -t rsa -C "GitLab"
$ ssh -vT git@gitlabhost
欢迎来到GitLab,Joe User!


4
如果主机名中有“-”符号,就会出现这种情况。(尽管根据RFC 952,这是合法的。)(使用 Windows 10 下的 Git Bash 测试,Git 版本为 2.13.2。)
当主机名中含有“-”符号时,ssh 会提示我输入密码。这似乎纯粹是 ssh 配置文件解析的问题,因为在 ~/.ssh/config 中添加别名(并在我的 git 远程 url 中使用该别名)可以解决这个问题。
换句话说,尝试将以下内容放入 C:/Users/{username}/.ssh/config 文件中。
Host {a}
    User git
    Hostname {a-b.domain}
    IdentityFile C:/Users/{username}/.ssh/id_rsa

而当您拥有形式的远程时

origin  git@a-b.domain:repo-name.git

将URL更改为使用以下表单

git remote set-url origin git@a:repo-name.git

2
在我的情况下,我使用的一对密钥没有默认名称id_rsaid_rsa.pub。使用这些名称生成密钥解决了问题,并且我实际上是在查看ssh -vT my_gitlab_address的输出时发现的。奇怪的事实是:它在一个装有Ubuntu的计算机上运行良好,但在其他安装不同发行版和旧版本OpenSSH的计算机上却无法正常工作。

2

我有正确的公钥/私钥,但似乎无效(出现相同错误,提示输入git用户密码)。重新启动电脑后就正常了!


可能是您没有正确处理ssh代理。请参阅https://help.github.com/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent/。 - EL_DON
这对我解决了密码问题。但现在似乎在尝试克隆仓库时会挂起,即使使用--clone-repo-directly true。 - ohthepain

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