我正在尝试在我的服务器上启动并运行 GitLab。我按照gitlab github 页面上的安装说明进行操作,一切顺利。
问题是,当我创建一个 repo 并尝试“git push -u origin master”时,系统会提示我输入“git@localhost 的密码:”
有些人建议在我的 sshd conf 中将 git 添加到 AllowedUsers,但我在那里没有 AllowedUsers 字段,所以这似乎不是问题。
我对 ssh 的东西还是很陌生,所以它可能是 ssh 密钥问题,尽管我尝试将所有相关的 ssh 密钥添加到 /home/git/.ssh/authorized_keys。
任何建议非常感谢!
访问 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
Run Code Online (Sandbox Code Playgroud)
出现提示时,为密钥文件命名,假设您将其命名为“my_key”,它会要求您输入密码。如果您输入一个,私钥(见下文)将使用该密码进行加密,因此您必须正确安装密钥文件并输入密码才能执行 git 操作。您也可以将其留空,这样安全性较低,但更方便。
这会生成~/.ssh/my_key
和~/.ssh/my_key.pub
。.pub 文件是公钥,另一个是私钥。您现在需要做两件事:
1. 在编辑器中打开 my_key.pub 并将内容复制到剪贴板。然后,通过Web界面登录gitlab。在右上角,您会发现一个随机生成的图片,如果您将鼠标悬停在该图片上,则会出现两个选项:“我的个人资料”和“注销”。单击前者。在结果页面的右侧,您将看到一个“添加公钥”按钮。单击该按钮,您将看到一个页面,您可以在其中粘贴您复制的公钥。为其命名,然后单击“保存”,就完成了。
2.(同样,在 Linux 上)打开(如果需要的话创建)文件~/.ssh/config
,并添加以下行:
IdentityFile ~/.ssh/my_key
Run Code Online (Sandbox Code Playgroud)
这告诉 ssh 在登录任何尝试使用密钥身份验证的站点时尝试使用私钥。
密钥背景(以防您不知道):ssh 使用的密钥称为非对称密钥。有一个“公钥”和一个“私钥”,它们作为一对生成(它们在数学上相关)。使用公钥加密的任何内容都只能使用私钥解密,反之亦然。ssh 使用这些进行身份验证:您向服务器提供公钥,向客户端提供相应的私钥。当您尝试登录时,服务器基本上会获取一些随机数据,使用公钥对其进行加密,然后将其发送到客户端。客户端使用私钥解密,并将原始随机数据发送回服务器。然后服务器就知道您就是您所说的那个人(因为您的客户端能够成功解密。
归档时间: |
|
查看次数: |
8762 次 |
最近记录: |