我刚刚安装了GitLab。
我创建了一个名为project-x的项目。
我创建了很少的用户并将其分配给项目。
现在我尝试克隆:
git clone git@192.168.0.108:project-x.git
它提示我输入密码。
我应该使用什么密码?
答案 0 :(得分:30)
与当前场景并不严格相关。有时,当系统提示您输入密码时,这是因为您添加了错误的*原始格式(HTTPS而不是SSH)
使用
查看您的远程信息git remote -v
如果是 HTTP(S)地址,则这是将其更改为 SSH 的命令:
git remote set-url origin git@gitlab.my_domain.com/example-project.git
HTTP(S)协议通常用于具有强用户名+通过
的公共回购
SSH 身份验证对于内部项目更常见,您可以使用ssh-key-file和简单的密码短语进行身份验证
GitLab 用户更有可能使用 SSH 协议
答案 1 :(得分:28)
它提示我输入密码。
不应该
如果您拥有代表有权访问project-x
的用户的正确公钥/私钥,那么gitlab将不会要求您提供任何内容。
但是假设ssh -vT git@192.168.0.108
首先工作。
答案 2 :(得分:12)
来自https://github.com/gitlabhq/gitlab-shell/issues/46的解决方案为我工作。
通过设置权限:
chmod 700 /home/git/.ssh
chmod 600 /home/git/.ssh/authorized_keys
密码提示消失。
答案 3 :(得分:4)
使用4096位密钥时遇到同样的问题:
$ ssh-keygen -t rsa -C" GitLab" -b 4096
$ ssh -vT git @ gitlabhost
...
debug1:提供公钥:/home/user/.ssh/id_rsa
debug1:可以继续的身份验证:publickey,password
debug1:尝试私钥:/home/user/.ssh/id_dsa
debug1:尝试私钥:/home/user/.ssh/id_ecdsa
debug1:下一个身份验证方法:密码
git @ gitlabhost&#39的密码:
连接由主机关闭
但是使用2048位密钥(默认大小),ssh连接到gitlab而不提示输入密码(在将新的pub密钥添加到用户的gitlab ssh密钥之后)
$ ssh-keygen -t rsa -C" GitLab"
$ ssh -vT git @ gitlabhost
欢迎来到GitLab,Joe User!
答案 4 :(得分:2)
如果主持人有一个' - '在它的名字。 (即使根据RFC 952这是合法的。)(使用git 2.13.2在Windows 10下使用Git Bash进行测试。)
ssh提示我输入任何碰巧有' - '在它的名字。这似乎是ssh配置文件解析的一个问题,因为在〜/ .ssh / config中添加一个别名(并在我的git remote urls中使用该别名)解决了这个问题。
换句话说,尝试在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
更改网址以使用以下表格
git remote set-url origin git@a:repo-name.git
答案 5 :(得分:2)
要向列表中添加另一个原因...在我的情况下,我发现此问题是由服务器上的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
。
答案 6 :(得分:1)
在我的情况下,我使用的是一对没有默认名称id_rsa
和id_rsa.pub
的密钥。
使用这些名称生成密钥解决了问题,我实际上发现它正在查看ssh -vT my_gitlab_address
的输出。奇怪的是:它在一台使用Ubuntu的计算机上运行,但在具有不同发行版和旧版OpenSSH的其他计算机上运行。
答案 7 :(得分:1)
Windows机器的相同解决方案:
克隆应该成功,无需密码。
答案 8 :(得分:1)
我有正确的公钥/私钥,但似乎它无论如何都没有工作(得到相同的错误,提示输入git-user密码)。计算机重启后它虽然有效!
答案 9 :(得分:1)
我正在使用 mac.gitlab 安装在centos服务器中。
我已经尝试了上述所有方法并为我找到了最终答案:
错误:
ssh-keygen -t rsa
右:
ssh-keygen -t rsa -C "your.email@example.com" -b 4096
答案 10 :(得分:1)
在Windows 10上使用VS Code下的终端,在尝试执行以下操作时,我得到提示“ git @ gitlab的密码:”
git push -u origin --all
我已经在Windows和gitlab中建立了ssh凭据,但是我使用Windows 10 bash密钥生成来做到这一点。然后,解决方案是在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一起使用
答案 11 :(得分:1)
当 git clone
要求输入密码时,您的本地机器可能有问题。我的问题是我使用自定义路径来保存 ssh 密钥,而该路径对 git 不可见。使用建议的默认路径或使用 ssh-add <file>
答案 12 :(得分:0)
我有同样的问题, 我花了很多时间搜索!
我有意使用Eclipse从GitLab导入项目。
正确导入项目后,我对以下配置进行了比较:
惊喜:遥控器在两种情况下都不一样。 我把它和日食一样,一切正常。
答案 13 :(得分:0)
Windows 10中存在同样的问题(不知道这是否相关)。
如果一切设置正确,ssh -vT git@myserver
命令成功,但Gitlab仍然要求我输入密码。
删除然后在Gitlab中重新创建密钥对我来说是个窍门。
答案 14 :(得分:0)
在我的Windows 10计算机上,这是因为SSH_GIT环境变量未设置为使用我在计算机上安装的putty plink。
答案 15 :(得分:0)
通常,如果您在系统上通过ssh设置了多个密钥(我的设备运行的是Windows 10),您将遇到此问题,修复方法是:
前提条件:按照GitLab
的说明设置SSH密钥请注意,在第二行之前有一个空格,这对于避免此解决方案无法正常工作非常重要。
答案 16 :(得分:0)
如果确定已将key.pub的内容上传到GitLab,则:
1-打开Git Bash“非CMD”
2-浏览到解决方案文件夹“ CD路径”
3-键入Git Init
4-类型Git Add .
4-类型Git Commit
6-键入Git Push
,它将起作用。 另一个提示: 确保复制密钥的文件的路径正确,并且与创建密钥时在CMD上显示的路径相同
答案 17 :(得分:0)
我的问题是我有一个gitlab.example.com
的dns条目指向我的负载均衡器。因此,当我尝试ssh git@gitlab.example.com
时,我真的是在错机器上。
我在~/.ssh/config
文件中输入了一个条目:
Host gitlab.example.com
Hostname 192.168.1.50
那浪费了很多时间...
答案 18 :(得分:0)
在GitLab中添加新的SSH密钥后,检查SSHD AllowGroups
中是否包含“ git”组(对于Debian /etc/ssh/sshd_config
)。如果没有,请添加它并重新启动sshd(systemctl restart ssh
)。
按照上面的建议用ssh -vT git@192.168.8.2
进行测试。
答案 19 :(得分:0)
就我而言,事实证明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