Gitlab 中几种不同的认证机制(Access Tokens,SSH Keys,Deploy Tokens,Deploy Keys)

前言

公司主要使用 Go 语言做项目,有一些 Gitlab 私有仓库需要引用,在做 CI 时,要自行配置权限以获取代码。

最近发现各个项目组在做 CI 遇到仓库权限问题时的解决方式不尽相同,有用 Project Token 的,有用 Deploy Keys 的。

了解一下。

使用

原理就两种,一是 SSH 方式拉取代码,二是 http 方式。

SSH 方式

本机生成 SSH Key,将公钥从 Gitlab 页面添加进去,注意选择下过期时间即可。

如何生成 Key?打开终端输入:

# ED25519
ssh-keygen -t ed25519 -C "<comment>"
# 2048-bit RSA
ssh-keygen -t rsa -b 2048 -C "<comment>"

任选其一即可,照着提示,一步步输入回车,就可以看到在你指定的文件夹下生成了两个文件,一个公钥一个私钥文件,例:

ed25519 # 私钥
ed25519.pub # 公钥

克隆仓库,使用 SSH 链接即可

git clone ssh://git@gitlab.com/<namespace>/<project_name>.git

http 方式

打开 Gitlab 网页,新增 Token,注意选择 Token 权限范围,只是拉取代码,read_repository 即可。生成后的 Token 值要自己保存好,因为只能看到一次。

clone 仓库

git clone https://<name>:<token>@gitlab.com/<namespace>/<project_name>.git

每次都要输入 name, token 比较麻烦,可以全局配置 git

git config --global url."https://<name>:<token>@gitlab.com".insteadOf "https://gitlab.com"

不同权限介绍

Gitlab 上有几个入口

  1. Personal Access Tokens
  2. Personal SSH Keys
  3. Group Access Tokens
  4. Group Deploy Tokens
  5. Repository Access Tokens
  6. Repository Deploy Tokens
  7. Repository Deploy Keys

1. Personal Access Tokens

用户个人的 Token,创建时可以选择多种权限,一般建议 token 的权限给小点,够用就行,例如:需要拉取代码,只给 read_repository 权限即可。

入口: User Settings -> Access Tokens

请添加图片描述

2. Personal SSH Keys

SSH 密钥主要用于身份验证,以允许用户通过 SSH 协议访问 Git 仓库。不同于个人访问 TokenSSH 密钥并没有直接的权限范围概念,而是通过用户的 GitLab 账户权限和项目的访问级别来控制访问。

SSH 密钥本身的作用是加密通信的一部分,用来证明你是谁,而具体的仓库访问权限则由 GitLab 的用户和项目设置来决定。

入口: User Settings -> SSH Keys

请添加图片描述

3. Group Access Tokens

同个人的 Token 的使用方式一致,只是其作用域只在当前组内生效。

入口: Group Settings -> Access Tokens

请添加图片描述

4. Group Deploy Tokens

看名字就知道是专门为部署使用的,个人理解跟 Group Access Tokens 差不太多,只是其权限范围少了很多,只有 read_repository, read_registry, write_registry 权限,不能访问 Gitlab API 来执行特定操作。

入口: Group Settings -> Repository -> Deploy Tokens

请添加图片描述

5. Repository Access Tokens

Token 使用方式一致,只是权限范围更小了,其作用域只在当项目内生效。

入口: Project Settings -> Access Tokens

请添加图片描述

6. Repository Deploy Tokens

Group Deploy Tokens 相似,只是权限范围更小了,其作用域只在当项目内生效。

入口: Project Settings -> Repository -> Deploy Tokens

请添加图片描述

7. Repository Deploy Keys

SSH 使用方式一致。部署机器上生成 SSH 密钥对,新增 Deploy Key,将公钥放入即可。

入口: Project Settings -> Repository -> Deploy Keys

请添加图片描述

个人理解:Deploy Key 就相当于一台机器,项目若是允许机器获取代码,在本项目中把它添加进来即可。

Deploy Keys 一个比较特殊的点:在该项目中生成的 Deploy Key,可以被其他项目添加,即使不在组内也可以。

请添加图片描述

CI Docker 镜像中 Go 拉取私有仓库的代码

主要是配置拉取代码的权限,两种方式:

  1. 使用 token
RUN git config --global url."https://$name:$token@gitlab.com".insteadOf "https://gitlab.com"RUN go env -w GOPRIVATE=gitlab.com && go mod tidy
  1. 使用 ssh key
# ssh key 安全考虑,一般放在环境变量中传入
RUN mkdir ~/.ssh && echo $id_rsa > ~/.ssh/id_rsa && chmod 600 ~/.ssh/id_rsa
# 处理错误:Host key verification failed.
RUN echo "Host *\n\tStrictHostKeyChecking no\n\tCheckHostIP no\n" > ~/.ssh/configRUN git config --global url."ssh://git@gitlab.com".insteadOf "https://gitlab.com"RUN go env -w GOPRIVATE=gitlab.com && go mod tidy

其他

GPG(GNU Privacy Guard) Keys 密钥主要用于签名和验证 Git 提交,而不是直接用于拉取代码。GPG 密钥的主要作用是确保提交的完整性和来源的真实性,而不是作为访问控制机制。

总结

本篇介绍了 Gitlab 的几种认证方式,其入口虽然不同,但原理基本一致,就两种方式:SSHToken

使用 Token 时需注意权限最小化(尽量为 Token 分配最小必要的权限,避免不必要的安全风险)。

不管使用哪种方式,定期审查很重要,需要定期审查 令牌/Key 的使用情况,确保它们仍然符合需求,并及时撤销不再需要的令牌。

最后简单介绍了一下在做 CIDocker 镜像中如何用 Go 拉取私有仓库的代码,环境配好即可。需要注意 TokenSSH Key 不要以明文方式输入,通常使用环境变量。

参考

  • gitlab官方文档

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/424804.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

unity3d入门教程五

unity3d入门教程五 13鼠标事件处理13.2鼠标跟随13.3鼠标拖拽&#xff08;选中对象&#xff0c;拖动对象&#xff09;13.4几个问题14.1事件函数14.2脚本的执行顺序14.3脚本的参数14.4引用类型的参数&#xff08;进行图片更换&#xff0c;人物换装&#xff09; 13鼠标事件处理 需…

自由流转--实例

一、自由流转的形态 流转能力打破设备界限&#xff0c;多设备联动&#xff0c;使用户应用程序可分可合、可流转&#xff0c;实现如邮件跨设备编辑、多设备协同健身、多屏游戏等分布式业务。 二、跨端迁移 在应用开发层面&#xff0c;跨端迁移指在A端运行的UIAbility迁移到B端上…

Linux操作系统如何添加新字体

在一个Linux操作系统及办公软件刚安装后&#xff0c;会发现缺少常用的“楷体_GB2312”和“仿宋_GB2312”字体。此时&#xff0c;只需要从其它电脑复制到或者从互联网上下载到这两个字体文件&#xff0c;然后导入到自己的电脑即可&#xff0c;再次打开办公软件就会看到这个字体已…

linux重要文件

/etc/sysconfig/network-scripts/ifcfg-eth1 网卡重启 /etc/init.d/network restart ifup ethname & ifdown ethname /etc/resolv.conf 设置Linux本地的客户端DNS的配置文件 linux客户端DNS可以在网卡配置文件(/etc/sysconfig/network/ifcfg-eth0 DNS2)里配置 也可以在/et…

FL Studio 24.1.1.4285中文破解完整版免费下载FL 2024注册密钥完整版crack百度云安装包下载

FL Studio 24.1.1.4285中文破解版是一个强大的软件选项&#xff0c;可以使用专业应用程序&#xff08;如最先进的录音机、均衡器、内置工具等&#xff09;制作循环和歌曲。它由数百个合成器和混响等效果以及均衡器组成&#xff0c;除此之外&#xff0c;您还可以在新音乐制作的方…

9. 什么是 Beam Search?深入理解模型生成策略

是不是总感觉很熟悉&#xff1f; 在之前第5&#xff0c;7&#xff0c;8篇文章中&#xff0c;我们都曾经用到过与它相关的参数&#xff0c;而对于早就有着实操经验的同学们&#xff0c;想必见到的更多。这篇文章将从示例到数学原理和代码带你进行理解。 Beam Search 对应的中文翻…

【C++】queue和priority_queue

个人主页~ queue和priority_queue 一、queue的介绍和使用1、queue的介绍2、queue的使用3、queue的模拟实现 二、priority_queue的介绍和使用1、priority_queue的介绍2、priority_queue的使用3、priority_queue的模拟实现 三、仿函数1、仿函数的特征2、仿函数的使用 ex、有关于l…

2020-11-04 求最小与均值输入0结束

缘由编写c语言希望进行一些解释_编程语言-CSDN问答 void 求最小与均值输入0结束() {//缘由https://ask.csdn.net/questions/1102407int x 1, m INT_MAX, n 0, c 0;while (x)cin >> x, (x&&m > x ? m x : 0), n x, (x ? c : 0);cout << "最…

【智路】智路OS air-edge 开发者手册 包管理工具

包管理工具 https://airos-edge.readthedocs.io/zh/latest/airospkg/airospkg.html 功能概述 智路OS包支持部署在智路OS开源版本和智路OS发行版。 智路OS发行版&#xff08;airos distribution&#xff09;是基于智路OS的商业化版本。包括智路OS内核层、系统工具、库、软件…

WPS如何删除表格下的空白页

WPS Office&#xff08;12.1.0.17827&#xff09; ① 鼠标右键&#xff0c;选择段落 ② 行距&#xff1a;固定值&#xff1b;设置值&#xff1a;1磅&#xff1b;取消勾选&#xff0c;确定即可~

Qt与Udp

(1)绑定端口 (2)广播 用udp实现广播通信_udp广播-CSDN博客 数据的发送是面向整个子网的&#xff0c;任何一台在子网中的计算机都可以接收到相同的数据。 如果一台机器希望向其他N台机器发送信息&#xff0c;这时候可以使用UDP的广播。 --------------- 广播地址&#xff1…

《论层次架构及其在软件系统中的应用》写作框架,软考高级系统架构设计师

论文真题 层次架构作为软件系统设计的一种基本模式,对于实现系统的模块化、可维护性和可扩展性具有至关重要的作用。在软件系统的构建过程中,采用层次架构不仅可以使系统结构更加清晰,还有助于提高开发效率和质量。因此,对层次架构的理解和应用是软件工程师必备的技能之一…

C#开发基础之单例模式下的集合数据,解决并发访问读写冲突的问题

1. 前言 在C#中&#xff0c;使用单例模式管理集合数据时&#xff0c;如果多线程同时访问集合&#xff0c;容易产生并发访问的读写冲突问题。单例模式下集合数据的并发访问读写冲突是如何产生的&#xff1f; 单例模式确保一个类在整个应用运行期间只有一个实例&#xff0c;这使…

《华为 eNSP 模拟器安装教程》

1.电脑安装环境要求&#xff1a; 检查电脑是否安装过 eNSP 和依赖软件&#xff0c;如果有&#xff0c;请全部卸载。 安装软件列表&#xff1a; 2.软件安装&#xff1a; 安装 WinPcap&#xff1a; 打开安装包&#xff0c;单击【Next】 单击【I Agree】 单击【Install】 单击【…

supermap iclient3d for cesium场景加载雨雪效果,并加载相应材质

首先新建一个文件夹来存放材质&#xff0c;我选择src/assets/MaterialJson snow.json,复制粘贴,雨雪用一个就行了 {"material": {"id": "DA82AFCB-129A-4E66-995A-9F519894F58D","cullMode": "none","alphaMode"…

OpenCV结构分析与形状描述符(19)查找二维点集的最小面积外接旋转矩形函数minAreaRect()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 找到一个包围输入的二维点集的最小面积旋转矩形。 该函数计算并返回指定点集的最小面积边界矩形&#xff08;可能是旋转的&#xff09;。开发者…

prompt实用技巧-AI+Mermaid【酷炫钉钉文档】

AI 新技能&#xff0c;最近 chatGPTo1 发布后模型能力出现了新的跨越&#xff0c;之前模型的一本正经的胡说八道幻想模式&#xff0c;让AI 对待理科推理明显弱于文案的 AGI 的生成。 prompt engineer 工程师程序员的福音 prompt 内容如下&#xff0c; 按照以上格式生成创建公…

2024年华为9月4日秋招笔试真题题解

2024年华为0904秋招笔试真题 二叉树消消乐好友推荐系统维修工力扣上类似的题--K站中转内最便宜的航班 二叉树消消乐 题目描述 给定原始二叉树和参照二叉树(输入的二叉树均为满二叉树&#xff0c;二叉树节点的值范围为[1,1000]&#xff0c;二叉树的深度不超过1000)&#xff0c…

【信创】Linux上图形化多ping工具--gping的编译安装与打包 _ 统信 _ 麒麟 _ 方德

原文链接&#xff1a;【信创】图形化多ping工具gping的编译安装与打包 | 统信 | 麒麟 | 方德 Hello&#xff0c;大家好啊&#xff01;今天给大家带来一篇关于在Linux操作系统上使用gping的文章。gping是一款非常实用的命令行工具&#xff0c;它将传统的ping命令进行了可视化改进…

『功能项目』切换职业面板【48】

我们打开上一篇47技能冷却蒙版的项目&#xff0c; 本章要做的事情是切换职业UI面板的功能 首先双击打开Canvas预制体在左上主角面板信息中新建一个button按钮 重命名&#xff08;父物体是按钮Button&#xff0c;子物体Image即可&#xff09; 创建一个Image 设计一下布局 复制三…