个性化阅读
专注于IT技术分析

如何在Ubuntu Server中为Gitlab私有存储库创建和配置部署SSH密钥

本文概述

当你使用Git存储库时, 许多人可能会积极地修改你的项目。其中一些人可能不是值得信赖的, 因为他们可能是新员工或类似的人。在这种情况下, 如果他们需要在服务器中执行git pull来更新生产服务器中的提交更改, 则可能不希望所有人都知道存储库的密码。另一种情况是你不想每次执行git pull或git clone时都提供存储库的密码, 这是自动部署。

这就是Gitlab中存在”部署密钥”功能的原因。部署密钥是SSH密钥, 存储在你的服务器上并授予对单个Gitlab存储库的访问权限。该密钥直接附加到存储库, 而不是个人用户帐户。在本文中, 我们将逐步向你展示如何自动化在Gitlab上托管的项目的部署过程。

1.查找或创建服务器的SSH密钥

你需要做的第一件事是验证服务器是否已经在服务器中用户的.ssh目录中创建了公钥, 因此启动到服务器的SSH会话并键入以下命令:

cat ~/.ssh/id_rsa.pub

这将自动在你的用户文件夹(在我们的情况下为/home/vagrant/.ssh)中搜索, 如果命令的输出显示以ssh-rsa开头的字符串, 则你已经具有可以使用的SSH密钥添加到你的存储库, 因此你可以跳到步骤2。如果相反, 你将获得输出:cat:〜/ .ssh / id_rsa.pub:没有这样的文件或目录, 那么你将需要首先创建SSH密钥。你可以使用以下命令通过SSH在Ubuntu中创建SSH密钥(首先导航至.ssh目录并键入):

ssh-keygen -t rsa

为了简化此过程, 我们不会为SSH密钥添加密钥短语, 因此如创建向导中所述, 只需按Enter即可不使用密钥短语:

通过SSH生成SSH密钥

如图所示, .ssh目录中没有id_rsa和id_rsa.pub文件。该密钥用作”通过”, 可以在当前服务器中克隆/拉动你的项目, 直到此刻它什么都不做, 因此你将需要执行其他步骤。

2.配置SSH客户端以在服务器中找到你的GitLab专用SSH

下一步, 你需要确定从Gitlab进行克隆时, 应将部署密钥用作身份验证, 而不是用户名和密码。为此, 你需要通过运行以下命令来确保启用ssh-agent:

eval $(ssh-agent -s)

然后, 你可以使用以下命令将密钥添加到SSH注册表中:

# Add your private key
ssh-add ~/.ssh/id_rsa

要保留这些设置, 你需要将它们保存到配置文件中。通常, 在OpenSSH客户端上, 你可以在〜/ .ssh / config文件中进行配置。如果该文件不存在, 则可以创建它:

# Go to SSH directory
cd ~/.ssh/

# Create the config file
# alternatively create the file using SFTP
# or in the way you want, we are using touch
touch config

并在文件中注册你的密钥。在本教程中, 我们将从Gitlab网站(非自托管版本)添加单个SSH密钥, 因此我们的配置文件内容为:

# GitLab.com server
Host gitlab.com
RSAAuthentication yes
IdentityFile ~/.ssh/id_rsa

由于你可能在一台服务器上有多个项目, 或者一个项目使用需要更新的不同存储库, 因此你可以毫无问题地在同一文件中使用以下符号实现多个SSH密钥:

# GitLab.com server
Host gitlab.com
RSAAuthentication yes
IdentityFile ~/.ssh/config/private-key-filename-01

# Private GitLab server
Host gitlab.mycompany.com
RSAAuthentication yes
IdentityFile ~/.ssh/config/private-key-filename

3.将服务器密钥作为部署密钥添加到存储库配置中

现在, 你需要服务器的公共密钥(在步骤1中创建), 在此步骤中, 你对Gitlab说:”嘿, 如果有人使用此SSH密钥进行克隆, 请允许他这样做。”你可以使用文本编辑器通过SFTP来获取公共文件的内容, 或者仅使用以下命令使用SSH打印文件的输出即可:

cat ~/.ssh/id_rsa.pub

在我们的情况下, 这将输出公钥的内容:

如何在Ubuntu Server中为Gitlab私有存储库创建和配置部署SSH密钥1

将长字符串保留在剪贴板中, 因为你需要将其粘贴到Gitlab中。接下来需要访问Gitlab中存储库的设置, 在本例中, 因为我们使用的是非自托管版本的Gitlab, 部署密钥的配置位于https://gitlab.com/ <用户名> / <存储库名称> /设置/存储库。添加新部署密钥的菜单如下所示:

Gitlab SSH部署密钥

在这里, 你只需要添加id_rsa.pub文件的内容, 提供标题, 并确定服务器是否可以用于进行更改(通常未经检查, 因为它是正式生产的)即可。将密钥添加到存储库后, 你现在应该可以在部署服务器中克隆/拉动存储库。

4.克隆并提取存储库以进行测试

最后一步, 要验证一切是否正确, 你可以克隆存储库以查看是否请求存储库的凭据(如果需要), 请再次阅读该教程并检查做错了什么。否则, 你将能够使用以下命令克隆你的项目:

注意

记住要通过SSH而不是HTTPS进行克隆, 否则显然可能会要求你提供凭据。

git clone git@gitlab.com:username/repositoryname.git

# Or once the project is clone, pull changes

git pull origin master

通过这样做, 你可能已经注意到, 由于有了部署密钥, 你不必输入Gitlab用户名或密码!

编码愉快!

赞(0)
未经允许不得转载:srcmini » 如何在Ubuntu Server中为Gitlab私有存储库创建和配置部署SSH密钥

评论 抢沙发

评论前必须登录!