Gitlab无法使用SSH密钥


10

我在Gitlab上遇到问题。我使用以下指南来安装和配置Gitlab https://github.com/gitlabhq/gitlab-recipes/blob/master/install/centos/README.md。安装似乎一切顺利。Web应用程序似乎运行良好。但是我无法克隆,拉动,推入,基本上我基本上不能使用Gitlab。尝试通过SSH克隆时,我已经看到403错误,HTTP错误和权限被拒绝。

我确保我的私钥在Windows和OS X上都正确设置。我可以在服务器上看到公钥。我将以下内容添加到〜/ .ssh.config中的配置文件中

Host {hostname}
    User git
    Hostname {hostname}
    PreferredAuthentications publickey
    IdentityFile C:/Users/{username}/.ssh/id_rsa

这是我在/ var / log / secure中看到的

Jan 14 17:31:48 dev_version_control sshd[3696]: Connection closed by 192.168.17.113
Jan 14 17:32:18 dev_version_control sshd[3700]: Connection closed by 192.168.17.113

/var/log/message当我尝试使用git或ssh时,没有角色

我不确定从这里去哪里。有什么建议?

我不知道您使用git用户名的SSH是什么意思。我使用的指南没有为git用户创建密码,并指出不能使用该用户登录。


您是否可以以“ git”用户身份SSH到Git服务器?您可以尝试添加'-vvv'参数以获得有关为何关闭连接的更多信息吗?检查/ var / log / secure和/ var / log / messages文件以查看其中是否存在任何错误也可能是值得的。
jaseeey 2014年

未在客户端上设置公钥-您需要确保私钥在客户端上。公用密钥在服务器上。
EEAA 2014年

更新了我的问题。希望能
有所

Answers:


10

假设您已经在客户端上加载了私钥,那么听起来这可能是'git'用户主目录和.ssh目录上的权限问题。

请尝试将/ home / git目录更改为0711的掩码:

chmod 0711 /home/git

确保/home/git/.ssh目录的掩码为0700:

chmod 0700 /home/git/.ssh

确保/home/git/.ssh/authorized_keys文件的掩码为0600:

chmod 0600 /home/git/.ssh/authorized_keys

如果本教程中的用户名与“ git”用户不同,则将其/ home / git替换为您的主目录。如果没有权限,请发表评论,我们将看看可能还有其他问题。


这可能是问题所在。我知道可以在Mac上使用git clone git @ {hostname}:{workspace} / {repository}进行克隆。不幸的是,我离开了Windows机器,因此明天需要尝试一下。公钥/私钥认证是否不能通过HTTP与Gitlab一起使用?我的印象是Github是如何工作的,但我对此可能是错的。
greyfox

公钥/私钥认证仅在SSH上有效。如果使用HTTP,则需要使用用户名和密码来执行任何操作。如果您使用的是新版本的Git,例如v1.8,则它会提示您输入用户名和密码。较旧的Git版本不执行此操作,因此您必须在远程(即https://username:password@git.server.com/repo.git)内联添加用户名和密码
jaseeey 2014年

啊,这现在变得更有意义了。那么GitHub for Windows应用程序是否存储凭据?非常感谢你的帮忙!
greyfox

我没有使用太多GitHub Windows应用程序,但是我认为从内存中打开它时需要登录,因此我想说它存储了访问凭证,以免您一直在输入它们。
jaseeey 2014年

1

检查您的公共密钥(通过Web face导入)中只有一条记录,/home/git/.ssh/authorized_keys并且该密钥具有gitlab的前缀和标题。换句话说,如果您在安装gitlab之前手动添加了相同的密钥,则将其删除。


您可以在其中拥有多个密钥,只要您的私钥可以匹配,就可以登录...
jaseeey 2014年

@Jason,我刚刚编辑过以更准确地解释它
Sinm 2014年

谢谢,这是给我的。在使用Gitlab添加密钥之前,我已经手动将ssh密钥放入了,重复的密钥导致了问题。
6英尺丹

1

我还建议您检查用户是否具有在gitlab中进行克隆/拉取/推送的适当权限。当问题的原因是gitlab中的用户没有足够的权限时,我花了太多时间查看ssh / https配置。


1

在我的情况下,我通过FreeBSD软件包安装了gitlab。Gitlab SSH无法正常工作。原因是git的主目录错误:(vipw)

git:*:211:211::0:0:gitosis user:/usr/local/git:/bin/sh

我将其更改为:

git:*:211:211::0:0:gitosis user:/home/git:/bin/sh

1

如果主机名称中带有“-”,则可能发生这种情况。(即使根据RFC 952这是合法的。)

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

删除它,然后使用表单重新添加它

origin  git@a:repo-name.git

1

如果您正在使用环境变量来传递密钥,则应该对它们进行base64编码,否则它们可能会因请求密码短语的错误而失败。这意味着密钥已损坏。如果你看到:

$ ssh-add <(echo "$SSH_PRIVATE_KEY")
Enter passphrase for /dev/fd/63: ERROR: Job failed: exit code 1

然后base64对SSH_PRIVATE_KEY变量进行编码。如果您使用的是OS X,

cat ~/.ssh/ssh_key_for_project | base64 | pbcopy

将对其进行编码并将其复制到剪贴板。现在,将.gitlab-ci.yml脚本行更改为

- ssh-add <(echo "$SSH_PRIVATE_KEY" | base64 -d)


0

我的问题是由puttygen创建和保存的私钥文件id_rsa与从ubuntu计算机创建的私钥文件格式不同。在我从ubuntu机器创建了一对密钥之后,将这些文件复制回到Windows机器的%UserProfile%.ssh文件夹下,然后将新生成的公共密钥添加到Gitlab。不再有我的权限被拒绝

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.