我正在尝试在我的服务器上启动并运行 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 文件是公钥,另一个是私钥。现在您需要做两件事:
- 将公钥提供给服务器
- 设置你的 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 ...),它将失败。 重新登录您的系统,它就会正常工作。
帮我一个忙,纠正我的英语:)