GitLab 需要 git@localhost 密码才能推送到仓库

GitLab 需要 git@localhost 密码才能推送到仓库

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

问题是,当我创建一个 repo 并尝试“git push -u origin master”时,系统提示我输入“git@localhost 的密码:”

有些人建议在我的 sshd 配置中将 git 添加到 AllowedUsers,但是我其中没有 AllowedUsers 字段,所以这似乎不是问题。

我对 ssh 还很陌生,所以这可能是 ssh 密钥问题,尽管我尝试将所有相关的 ssh 密钥添加到 /home/git/.ssh/authorized_keys。

非常感谢您的任何建议!

答案1

访问 gitlab 管理的存储库的正确方法是添加公钥。

首先,您需要创建一个密钥对:(这些是用于 Linux 机器的命令,我相信如果您安装了适用于 Windows 的 git,它们也可以在 Windows 上运行,它会安装一个 cygwin 环境)

cd ~/.ssh #create this dir if it's absent
ssh-keygen -t rsa -b 2048 #i like 2048 bit rsa keys, but you could use -b 1024 instead

出现提示时,请为密钥文件命名,假设您将其命名为“my_key”,它会要求您输入密码。如果您输入密码,私钥(见下文)将使用该密码加密,因此您必须正确安装密钥文件并输入密码才能执行 git 操作。您也可以将其留空,这样不太安全但更方便。

这将生成~/.ssh/my_key~/.ssh/my_key.pub。 .pub 文件是公钥,另一个是私钥。现在您需要做两件事:

  1. 将公钥提供给服务器
  2. 设置你的 ssh 客户端以了解并使用私钥

操作 1. 在编辑器中打开 my_key.pub 并将内容复制到剪贴板。然后,通过 Web 界面登录 gitlab。在右上角,您将看到一张随机生成的图片,如果您将鼠标悬停在上面,将出现两个选项:“我的个人资料”和“注销”。单击前者。在结果页面的右侧,您将看到一个“添加公钥”按钮。单击该按钮,您将看到一个页面,您可以在其中粘贴您复制的公钥。给它命名,单击保存,您就完成了。

要做 2. (同样,在 Linux 上)打开(如果需要则创建)文件~/.ssh/config,并添加以下行:

IdentityFile ~/.ssh/my_key

这告诉 ssh 在登录任何尝试使用密钥认证的站点时尝试使用私钥。

密钥背景(如果您不知道的话):ssh 使用的密钥称为非对称密钥。有一个“公钥”和一个“私钥”,它们是成对生成的(它们在数学上是相关的)。使用公钥加密的任何内容只能使用私钥解密,反之亦然。ssh 使用这些进行身份验证:您为服务器提供公钥,为您的客户端提供相应的私钥。当您尝试登录时,服务器基本上会获取一些随机数据,使用公钥对其进行加密,然后将其发送给客户端。客户端使用私钥解密,并将原始随机数据发送回服务器。然后服务器就知道您就是您所说的那个人(因为您的客户端能够成功解密。

答案2

@stochastic 出现此问题的主要原因是 ssh-keys 不匹配的问题。

我遇到了同样的问题,无法在 gitlab 的配置文件中输入 ssh-key 并让应用程序完成剩下的工作。

ssh-keygen -t rsa -C “这里是你在Gitlab使用的电子邮件”

然后按照步骤将其粘贴到您的个人资料中。

重要的: 当您在计算机上的一个会话中生成密钥时。 并在同一个会话中尝试使用它(git clone ...),它将失败。 重新登录您的系统,它就会正常工作。


帮我一个忙,纠正我的英语:)

相关内容