本文概述
- 1.查找或创建服务器的SSH密钥
- 2.配置SSH客户端以在服务器中找到你的GitLab专用SSH
- 3.将服务器密钥作为部署密钥添加到存储库配置中
- 4.克隆并提取存储库以进行测试
这就是Gitlab中存在” 部署密钥” 功能的原因。部署密钥是SSH密钥, 存储在你的服务器上并授予对单个Gitlab存储库的访问权限。该密钥直接附加到存储库, 而不是个人用户帐户。在本文中, 我们将逐步向你展示如何自动化在Gitlab上托管的项目的部署过程。
1.查找或创建服务器的SSH密钥 你需要做的第一件事是验证服务器是否已经在服务器中用户的.ssh目录中创建了公钥, 因此启动到服务器的SSH会话并键入以下命令:
cat ~/.ssh/id_rsa.pub
【如何在Ubuntu Server中为Gitlab私有存储库创建和配置部署SSH密钥】这将自动在你的用户文件夹(在我们的情况下为/home/vagrant/.ssh)中搜索, 如果命令的输出显示以ssh-rsa开头的字符串, 则你已经具有可以使用的SSH密钥添加到你的存储库, 因此你可以跳到步骤2。如果相反, 你将获得输出:cat:?/ .ssh / id_rsa.pub:没有这样的文件或目录, 那么你将需要首先创建SSH密钥。你可以使用以下命令通过SSH在Ubuntu中创建SSH密钥(首先导航至.ssh目录并键入):
ssh-keygen -t rsa
为了简化此过程, 我们不会为SSH密钥添加密钥短语, 因此如创建向导中所述, 只需按Enter即可不使用密钥短语:
文章图片
如图所示, .ssh目录中没有id_rsa和id_rsa.pub文件。该密钥用作” 通过” , 可以在当前服务器中克隆/拉动你的项目, 直到此刻它什么都不做, 因此你将需要执行其他步骤。
2.配置SSH客户端以在服务器中找到你的GitLab专用SSH 下一步, 你需要确定从Gitlab进行克隆时, 应将部署密钥用作身份验证, 而不是用户名和密码。为此, 你需要通过运行以下命令来确保启用ssh-agent:
eval $(ssh-agent -s)
然后, 你可以使用以下命令将密钥添加到SSH注册表中:
# Add your private keyssh-add ~/.ssh/id_rsa
要保留这些设置, 你需要将它们保存到配置文件中。通常, 在OpenSSH客户端上, 你可以在?/ .ssh / config文件中进行配置。如果该文件不存在, 则可以创建它:
# Go to SSH directorycd ~/.ssh/# Create the config file# alternatively create the file using SFTP# or in the way you want, we are using touchtouch config
并在文件中注册你的密钥。在本教程中, 我们将从Gitlab网站(非自托管版本)添加单个SSH密钥, 因此我们的配置文件内容为:
# GitLab.com serverHost gitlab.comRSAAuthentication yesIdentityFile ~/.ssh/id_rsa
由于你可能在一台服务器上有多个项目, 或者一个项目使用需要更新的不同存储库, 因此你可以毫无问题地在同一文件中使用以下符号实现多个SSH密钥:
# GitLab.com serverHost gitlab.comRSAAuthentication yesIdentityFile ~/.ssh/config/private-key-filename-01# Private GitLab serverHost gitlab.mycompany.comRSAAuthentication yesIdentityFile ~/.ssh/config/private-key-filename
3.将服务器密钥作为部署密钥添加到存储库配置中 现在, 你需要服务器的公共密钥(在步骤1中创建), 在此步骤中, 你对Gitlab说:” 嘿, 如果有人使用此SSH密钥进行克隆, 请允许他这样做。” 你可以使用文本编辑器通过SFTP来获取公共文件的内容, 或者仅使用以下命令使用SSH打印文件的输出即可:
cat ~/.ssh/id_rsa.pub
在我们的情况下, 这将输出公钥的内容:
文章图片
将长字符串保留在剪贴板中, 因为你需要将其粘贴到Gitlab中。接下来需要访问Gitlab中存储库的设置, 在本例中, 因为我们使用的是非自托管版本的Gitlab, 部署密钥的配置位于https://gitlab.com/ < 用户名> / < 存储库名称> /设置/存储库。添加新部署密钥的菜单如下所示:
文章图片
在这里, 你只需要添加id_rsa.pub文件的内容, 提供标题, 并确定服务器是否可以用于进行更改(通常未经检查, 因为它是正式生产的)即可。将密钥添加到存储库后, 你现在应该可以在部署服务器中克隆/拉动存储库。
4.克隆并提取存储库以进行测试 最后一步, 要验证一切是否正确, 你可以克隆存储库以查看是否请求存储库的凭据(如果需要), 请再次阅读该教程并检查做错了什么。否则, 你将能够使用以下命令克隆你的项目:
注意 记住要通过SSH而不是HTTPS进行克隆, 否则显然可能会要求你提供凭据。
git clone git@gitlab.com:username/repositoryname.git# Or once the project is clone, pull changesgit pull origin master
通过这样做, 你可能已经注意到, 由于有了部署密钥, 你不必输入Gitlab用户名或密码!
编码愉快!
推荐阅读
- 使用纯JavaScript编码和解码HTML实体
- JavaScript Battery API简介
- 如何在浏览器(无服务器)中创建文件并使用JavaScript生成下载
- 如何使用JavaScript在单击或鼠标事件中从画布获取像素颜色
- JavaScript按位NOT,?运算符
- 如何验证何时在JavaScript中加载了多个图像
- 画布已被跨源数据污染,污染的画布可能无法导出
- 使用“一键清理”功能要防止删除WORD文档
- 图解Web前端实现类似Excel的电子表格