16

我正在尝试让 GitLab 在我的服务器上启动并运行。我按照 gitlab github 页面上的安装说明进行操作,一切顺利。

问题是,当我创建一个回购并尝试

sudo git push -u origin master

系统提示我输入“git@localhost 的密码:”

git用户没有密码,所以这是个问题。

其他遇到此问题的人建议在我的 sshd conf 中将 git 添加到 AllowedUsers 但我没有 AllowedUsers 字段,因此这似乎不是问题。

我对 ssh 的东西还是很陌生,所以我相信它是某种 ssh 密钥问题,尽管我尝试将所有相关的 ssh 密钥添加到 /home/git/.ssh/authorized_keys 并验证文件中没有换行符.

仅供参考,我的安装完全通过了 gitlab wiki 中提供的测试:

sudo -u gitlab bundle exec rake gitlab:app:status RAILS_ENV=production

任何建议都非常感谢!

编辑

所以,我终于通过从另一台机器提交一个 repo 来解决这个问题。事实上,我被 SSH 连接到运行 gitlab 的同一台机器上。当我尝试从主机以外的机器提交时,它工作得很好。因此,对于某些人来说,这可能是一个解决方案(对于我们来说,因为我们在单独的机器上开发而不是在我们的服务器上开发)。

对于任何试图在同一台机器上进行托管和开发的人来说,这仍然是一个开放式的问题。

4

15 回答 15

4

TL;博士

密钥存储在 gitlab DB 和 gitolite 端。您应该使用工厂构建的 gitolite-admin.git 文件夹,不要使用您的备份!稍后使用 update keys 命令重建 gitolite 的密钥。(将已保存在 gitlab db 中的那些密钥更新​​为 gitolite)

sudo -u gitlab -H bundle exec rake gitlab:gitolite:update_keys RAILS_ENV=production

很可能是因为 gitolite 密钥无法正确保存存在问题。这些密钥(用于登录)实际上由 gitlab 和 gitolite 单独保存。对于拉/推实际上是使用保存在 gitolite 中的键。(git/repositories/gitolite-admin.git/index, git/.gitolite/keydir, git/.ssh/authorized_keys)

gitlab 通常应该帮助将那些在网络上导入的密钥保存到 gitolite 文件中。然而,由于某些原因,它失败了。由于密钥没有正确保存在 gitolite 中,客户端/服务器无法使用密钥并回退到密码。

您必须检查并修复保存在 gitolite 中的那些密钥以纠正问题。

查看更多 https://groups.google.com/forum/?fromgroups=#!topic/gitlabhq/X0z_9l7L7A8

于 2012-12-19T03:43:36.340 回答
2

如果安装顺利,这意味着您的 gitlab 能够毫无问题地克隆 gitolite-admin 存储库。
但是您说它通过了状态检查,这意味着您正在使用一个名为“gitlab”的帐户进行 ssh 连接。

这也意味着任何客户端都必须使用同一个帐户 ' gitlab' 而不是 ' git' 进行 ssh。
因此,如果您的 ssh 密钥是通过 gitlab 界面添加的,那么您可以 git clone/git push 到一个远程名称来源,其地址为 ' gitlab@server'

要进行更多调试,请查看“设置 Git 远程 SSH (git-upload-pack / git-receive-pack) ”中提到的其他一些技巧:

如果您无法在本地推送(在服务器本身上,即在“localhost”上),请至少尝试:

ssh -vvvT gitlab@localhost

它不应该需要任何密码,因为/home/gitlab/.ssh/id_rsa两者/home/gitlab/.ssh/id_rsa.pub都存在。

于 2012-08-01T21:09:01.023 回答
2

我收到了相同的密码提示。我的问题是我将 ssh 的使用限制为只有几个用户。我将 git 用户添加到 AllowUsers 列表 sshd_config,一切正常。

于 2013-03-26T21:16:45.963 回答
1

确保您的 gitlab 个人资料有您的公共 ssh 密钥。登录 gitlab,转到您的个人资料并选择“添加公钥”按钮。将“keyfile”.pub 内容复制并粘贴到“密钥”框中。某些版本的 gitlab 存在一个错误,即当您添加公钥时,它没有更新 authorized_keys 文件。在您将公钥添加到您的配置文件后,验证(但不要手动添加)您的公钥是否在 authorized_keys 文件中。如果这不是问题,那么早期的答案之一可能会有所帮助。

于 2013-05-03T20:26:42.180 回答
1

我最近遇到了同样的问题,发现对我来说问题是 SELinux 阻止sshd访问gitlab 数据目录中的authorized_keys/var/opt/gitlab/文件。

要解决此问题,请编辑/etc/selinux/targeted/contexts/files/file_contexts.homedirs并添加以下行:

/var/opt/gitlab/\.ssh/.*    system_u:object_r:ssh_home_t:s0

然后运行:

$ restorecon -Rv /var/opt/gitlab

来源:https ://serverfault.com/questions/50573/selinux-preventing-passwordless-ssh-login

于 2015-04-22T08:02:33.680 回答
1

在 git 服务器上编辑/etc/ssh/sshd_config

取消注释身份验证部分下的以下行或添加它们:

PubkeyAuthentication yes

AuthorizedKeysFile %h/.ssh/authorized_keys

给你的服务器一个电源循环,然后启动 gitlab

于 2013-07-03T09:10:35.127 回答
1

最近这种情况开始发生在我身上——对于工作项目,git 会询问我的电子邮件和密码。输入后它继续正常,但很烦人。

我可以为我有权访问的任何给定应用程序修复此问题:

git config remote.origin.url git@github.com:user_org_or_co/repo_name_itself

例如

git config remote.origin.url git@github.com:smithw/bookmarkapp
于 2012-08-21T23:44:11.193 回答
0

你的 git 和 gitlab 用户没有密码?

怎么样sshd_config

检查此行是否在文件中:PermitEMptyPassword Yes

无论如何我猜它不安全,在我的安装中,我把这个'是',克隆然后保留旧配置......克隆时ssh_key由用户git保存,它不会再询问密码了..

但是现在,我遇到了另一个错误,当我要推送时,对于每个新用户,我们必须重新配置 ssh 以允许空推送,然后保留配置。

(我还没有测试过这个方法,因为我发现我的 gitlab 没有在 git user 中创建 repos :/)

于 2012-11-09T15:39:06.510 回答
0

这可能太简单了,但我遇到了同样的问题。我猜这是因为它选择了 localhost 作为域名。

当我从另一台计算机登录回我的本地主机机器时,它成功了,然后尝试提交。这很愚蠢,但值得一试。

于 2013-02-11T22:31:07.123 回答
0

我遇到了一个表现出类似症状的问题。我的问题是我在路由器后面有两台计算机。路由器设置为将 SSH 流量(端口 22)端口转发到计算机 1。Gitlab 安装在计算机 2 上。我正在使用域和面向公众的 IP 进行连接。当我推送时,SSH 流量被定向到计算机 1。计算机 1 上有一个 git 用户,只是因为安装了 git。计算机 1 提示我输入 git 用户的密码。

我的安装也通过了所有准备好的检查。

我不确定您是否遇到同样的问题,但症状完全相同,所以我认为这可能会有所帮助。

于 2012-08-13T12:26:55.527 回答
0

这里有一个勾号。

要确定问题的原因,请通过 . 检查服务器上的日志sudo grep sshd /var/log/auth.log

在 2013 年 12 月 13 日提交之前b24d5d由于. 你必须有:.ssh/

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

或 ssh 拒绝建立 rsa 连接并sudo grep sshd /var/log/auth.log说:

Authentication refused: bad ownership or modes for file /home/git/.ssh/authorized_keys    

该问题已通过将 sshd 设置为非严格模式进行开发来解决,即使权限太自由也可以正常运行。

于 2014-01-10T13:43:42.500 回答
0

有一次我把这个搞混了。当您使用sudo git时,这意味着 git 正在以 root 身份启动。问题是——你是否为 root 创建了 SSH 密钥并将其放入 Gitlab 中?

我猜你创建了你的 SSH 密钥sudo(这是你的普通帐户),将 SSH 公钥放入 Gitlab,然后运行sudo git​​.

您可以尝试在没有sudo. 如果您有文件夹权限问题,这使您首先使用 sudo,请尝试授予您的用户帐户访问该文件夹的权限。或者也许在您具有写入权限的文件夹中正常尝试 git。

于 2013-07-12T07:12:09.773 回答
0

这意味着 gitlab ssh 服务器没有正确配置。

编辑/etc/ssh/sshd_config并确保:

PasswordAuthentication no
ChallengeResponseAuthentication no

这应该只强制 ssh 密钥登录,这也是一个很好的安全措施。许多较新的发行版已经默认启用了此功能。

不要问我是否被锁在外面,显然 SO 不是询问如何配置和使用私钥/公钥对的地方。

于 2015-05-18T12:13:23.603 回答
0

对于 Bitnami 或任何其他想要快速解决此问题的配置的任何人,只需使用完整路径即可。

git clone git@server_adress:/full/path/to/project.git

编辑:我忘了提,检查您是否已通过网页将 SSH 密钥添加到 git-lab 非常重要。

于 2015-06-30T21:57:59.160 回答
0

我遇到了类似的问题:Gitlab 服务器位于 docker 容器内,每次尝试推送更改时,我都有: git@localhost's password:

根本原因是使用“localhost”作为名称。正确的方法是通过以下方式检查 GitLab 容器的 IP: $ docker inspect <container_id>

找到行: "IPAddress": "172.17.0.2",

测试它: ssh -T git@172.17.0.2 答案应该是这样的。“欢迎来到 GitLab,@user_name!”

现在有必要修复存储库的 URL: $ git remote set-url origin git@172.17.0.2:user_name/repo-name.git

之后 push 命令应该可以正常工作。

于 2020-02-14T10:04:47.400 回答