57

我刚刚安装了 GitLab。

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

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

现在我尝试克隆:

 git clone git@192.168.0.108:project-x.git

它提示我输入密码。

我应该使用什么密码?

4

21 回答 21

43

与当前情景不严格相关。有时当您被提示输入密码时,这是因为您添加了错误的*源格式(HTTPS 而不是 SSH)

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

查看您的远程信息

git remote -v

如果您看到HTTP(S)地址,这是将其更改为SSH的命令:

git remote set-url origin git@gitlab.my_domain.com/example-project.git
于 2016-08-17T11:18:51.257 回答
40

它提示我输入密码。

它不应该。
如果您拥有代表有权访问的用户的正确公钥/私钥project-x,那么 gitlab 不会要求您提供任何东西。

但这假设ssh -vT git@192.168.0.108首先起作用。

于 2013-03-19T09:52:51.093 回答
14

https://github.com/gitlabhq/gitlab-shell/issues/46的解决方案对我有用。

通过设置权限:

chmod 700 /home/git/.ssh
chmod 600 /home/git/.ssh/authorized_keys

密码提示消失。

于 2013-07-19T13:08:59.193 回答
4

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

$ ssh-keygen -t rsa -C "GitLab" -b 4096
$ ssh -vT git@gitlabhost
...
debug1:提供公钥:/home/user/.ssh/id_rsa
debug1:可以继续的身份验证:公钥,密码
debug1:尝试私钥:/home/user/.ssh/id_dsa
debug1:尝试私钥:/home/user/.ssh/id_ecdsa
debug1:下一个验证方法:密码
git@gitlabhost的密码:
连接被主机关闭

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

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

于 2017-03-30T15:31:48.423 回答
4

如果主机名称中包含“-”,则可能会发生这种情况。(即使根据RFC 952这是合法的。)(使用 git 2.13.2 在 Windows 10 下使用 Git Bash 进行测试。)

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
于 2017-08-04T20:37:43.980 回答
4

我的问题是我有一个 DNS 条目gitlab.example.com指向我的负载均衡器。所以当我尝试命令时,ssh git@gitlab.example.com我真的连接到了错误的机器。

我在我的~/.ssh/config文件中做了一个条目:

Host gitlab.example.com
    Hostname 192.168.1.50

这浪费了很多时间...

于 2018-11-04T17:30:23.530 回答
4

在 GitLab 中添加新的 SSH 密钥后,检查 SSHD 中是否包含“git”组AllowGroups(对于 Debian /etc/ssh/sshd_config)。如果没有,添加它并重新启动 sshd ( systemctl restart ssh)。

按照上面的建议进行测试ssh -vT git@192.168.8.2

于 2019-09-16T20:05:31.170 回答
3

在列表中添加另一个原因......在我的情况下,我发现这个问题是由服务器上的 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按预期在客户端了。

于 2018-05-10T10:43:46.687 回答
2

我有正确的公钥/私钥,但似乎它无论如何都不起作用(出现相同的错误,提示输入 git-user 密码)。重新启动计算机后,它仍然有效!

于 2014-02-04T15:35:20.043 回答
2

在我的情况下,我使用了一对没有默认名称的键id_rsaid_rsa.pub.

生成具有这些名称的密钥解决了这个问题,实际上我发现它是在查看ssh -vT my_gitlab_address. 奇怪的事实:它可以在一台装有 Ubuntu 的计算机上运行,​​但不能在其他具有不同发行版和旧版本 OpenSSH 的计算机上运行。

于 2016-01-15T15:48:41.127 回答
1

Windows机器的相同解决方案:

  1. 生成 SSH 密钥并将密钥添加到 Git 实验室服务器
  2. 确保 2 个 SSH 密钥文件位于 /.ssh 文件夹中(例如 C:\Users\xxx.ssh)

克隆应该是成功的,不需要密码。

于 2015-04-02T02:30:08.377 回答
1

我正在使用一个安装在centos 服务器上的mac.gitlab 。

我已经尝试了上述所有方法,并为我找到了最终答案:

错误的:

ssh-keygen -t rsa

对:

 ssh-keygen -t rsa -C "your.email@example.com" -b 4096
于 2017-10-05T13:06:10.910 回答
1

在使用 VS Code 下的终端的 Windows 10 上,我在尝试执行以下操作时收到“git@gitlab 的密码:”提示:

git push -u origin --all

我已经在 windows 和 gitlab 中建立了我的 ssh 凭据,但我使用了 Windows 10 bash key-gen 来执行此操作。然后解决方案是在 VS 代码终端中调用 bash,然后再次发出命令。

bash
git push -u origin --all

它成功了。

为了避免手动使用 bash/git,我在 windows .ssh/id_rsa 和 bash shell .ssh/id_rsa 之间放置了一个符号链接:

C:\Users\bruce\.ssh>mklink id_rsa C:\Users\bruce\AppData\Local\lxss\home\bruce\.ssh\id_rsa

VS Code Git 菜单操作(推送、拉取等)现在可与 gitlab 一起使用

于 2018-08-14T22:07:58.127 回答
1

就我而言,事实证明 gitlab 正在运行docker,并且端口映射为 4022/22。

因此我必须通过编辑~/.ssh/config来指定端口Port 4022,例如:

Host gitlab-local
    Hostname        192.168.1.101
    User git
    Port 4022
    IdentityFile    ~/.ssh/id_rsa.pub
    # LogLevel DEBUG3
于 2020-06-18T04:17:28.997 回答
1

git clone要求输入密码时,您的本地计算机可能存在问题。我的问题是我正在使用自定义路径来保存 ssh 密钥,并且该路径对 git 不可见。使用向您建议的默认路径或使用将文件添加到自定义位置ssh-add <file>

于 2021-01-25T12:36:17.020 回答
0

我遇到了同样的问题,我花了很多时间寻找!

我有使用 Eclipse 从 GitLab 导入项目的想法。

正确导入项目后,我对以下配置进行了比较:

  • 我导入到 Eclispe 中的项目 Git 存储库(“在 Eclipse 中”,Git 存储库,在 myprojectRepo / 工作目录 / .git / config 中)
  • 在.git / config中制作的那个,我想用git推送我的项目:git push ...并要求我输入密码。

惊喜:遥控器在两种情况下都不相同。我在 Eclipse 中提交了相同的内容,并且一切正常。

于 2016-04-28T07:53:17.447 回答
0

在 Windows 10 中遇到了同样的问题(不知道这是否相关)。一切设置正确,ssh -vT git@myserver命令成功,但 Gitlab 仍然要求我输入密码。

在 Gitlab 中删除然后重新创建密钥是我的诀窍。

于 2016-09-14T17:05:10.537 回答
0

在我的 Windows 10 机器上,这是因为 SSH_GIT 环境变量未设置为使用我在机器上安装的 putty plink。

于 2016-10-04T10:22:33.177 回答
0

通常,如果您在系统上通过 ssh 设置了多个密钥(我的设备运行的是 Windows 10),您会遇到此问题,修复方法是:

前提条件:按照 GitLab 的指示设置 SSH 密钥

  1. 使用 Notepad++ 或您喜欢的编辑器打开 /c/Users//.ssh/config 文件
  2. 将以下内容粘贴到其中。 主机身份文件 ~/.ssh/

请注意,第二行之前有一个空格,避免此解决方案不起作用非常重要。

于 2017-03-20T12:03:18.223 回答
0

如果您确定已将 key.pub 的内容上传到 GitLab,则: 1- 打开 Git Bash “Not CMD” 2- 浏览到解决方案文件夹 “CD 路径” 3- Type Git Init 4- Type Git Add . 4- Type Git Commit 6- TypeGit Push

它会工作.. 另一个提示:确保您复制密钥的文件的路径是正确的,并且与创建密钥时在 CMD 上显示的路径相同

于 2018-08-15T05:51:39.803 回答
0

以防万一有人遇到和我一样的问题。我在 docker env 中运行 GitLab 服务器,我想将 ssh 连接端口设置为 2202,而不是 22,所以我将主机的 2202 端口绑定到 docker 容器的 2202 端口。我22岁没做。

然后我忘记了我必须更改ssh的默认连接端口......所以我和这个问题作者有同样的错误。

首先,我打开了#22端口,它工作了,然后,我将ssh连接端口更改为2202,一切正常。

我自己很愚蠢,但它可能会帮助其他傻瓜:)

于 2021-08-13T11:03:48.093 回答