git配置远程仓库的认证信息

git配置远程仓库的认证信息

  • 远程仓库的认证信息是什么?为何需要?
    • 如果不配置认证信息的话
  • 配置认证信息的方式有哪些?
    • 用户名和密码
    • Git 凭证助手(Credential Helper)
    • SSH密钥认证
    • 使用主机认证信息的配置文件~/.netrc

远程仓库的认证信息是什么?为何需要?

用户在使用 Git 与远程仓库交互(比如:从远程仓库拉取/推送代码)时,远程仓库需要验证用户身份信息(不然岂不是谁都可以拉取代码了)来控制用户对远程仓库的访问权限,而这个身份信息就是认证信息。

如果不配置认证信息的话

如果我们不配置认证信息的话,每次拉取代码时,git就会默认采用用户名和密码的方式来进行认证:git都会让用户输入用户名和密码,但是拉取/推送操作是个挺频繁的操作,所以不配的话,你会😡的。

配置认证信息的方式有哪些?

Git 支持多种方式来配置和管理认证信息,常见的远程仓库认证方式:

  • 用户名和密码
  • SSH 密钥、
  • 令牌(如 GitHub 的 PAT)
  • 凭证管理器等

根据安全需求和便捷性需求,选择适合的认证方式能够有效提升工作效率,且能确保安全性。

下面分别详细讲讲一些配置认证信息的方式。

用户名和密码

这是最传统的认证方式,尤其适用于早期git服务。

特点

  • 繁琐
    • 每次访问远程仓库都给输入一次
  • 安全性低

配置方法

  • 方法1
    • 当使用HTTP/HTTPS协议访问远程仓库时,Git会要求用户输入用户名和密码来进行认证身份
  • 方法2
    • 直接在 URL 中嵌入用户名和密码
      git clone https://<username>:<password>@github.com/YourRepo.git
      

Git 凭证助手(Credential Helper)

Git 提供了一种凭证管理工具 credential helper,可以将 HTTPS 凭证缓存到内存中,或存储到磁盘中,从而避免每次都重新输入用户名和 PAT。

Git credential helper 支持多种存储方式,包括:

  • cache:将凭证 临时 缓存到内存当中(默认15分钟)

    • Git 支持在本地缓存用户名和密码,缓存时间默认为 15 分钟,可通过以下命令设置:
      git config --global credential.helper cache
      git config --global credential.helper 'cache --timeout=3600'  # 设置缓存时间为 1 小时
      
    • 如果需要清除已缓存的认证信息,可以运行:
      git credential-cache exit
      
  • store:将凭证永久保存在纯文本文件(~/.git-credentials)

    git config --global credential.helper store
    
      执行上述命令后,在下一次需要认证时输入用户名和密码,Git 会将其保存到 ~/.git-credentials 文件中
    
  • manager:在windows或mac系统上使用原生的Git Credential Manager 来安全存储和管理凭证。

    git config --global credential.helper manager
    

SSH密钥认证

SSH(Secure Shell)是一种加密协议,通过密钥对来进行认证安全认证的,所以不需要输入用户名和密码。
密钥对简述

  • 分为公钥和私钥
    • 公钥:
      • 加密发送信息用的
      • 公开的,放在远程仓库上
    • 私钥:
      • 解密接收信息用的
      • 私有的,只存放在用户这边
  • 工作原理
    • 当用户访问远端仓库时,远程仓库对用户进行认证(远程仓库检查用户是否有与其公钥相匹配的私钥)
      1. 远程仓库(服务器)随机生成一个随机数用公钥加密后发送给用户(客户端)
      2. 客户端接收到数据后用私钥解密为原数据,发送回给远程仓库
      3. 远程仓库经过对客户端发送来的数据与自己生成的随机数进行对比是否相同,来判断客户端是否有与其公钥匹配的私钥

特点

  • 自动化、便捷
    • 配置完之后访问远程仓库就不需要额外手动进行认证了,会自动进行密钥对认证
  • 安全性高

配置

  1. 先得有一对SSH密钥(生成SSH密钥对)

    ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
    

    按照提示设置密钥文件路径(默认是 /.ssh/id_rsa)和可选的密码保护。公钥在/.ssh/id_rsa.pub

  2. 添加 SSH 公钥到远程仓库

    # 查看公钥
    cat ~/.ssh/id_rsa.pub
    

    在 GitHub 或其他平台的「SSH 设置」中添加公钥。

  3. 测试 SSH 连接是否成功

    ssh -T git@github.com
    

    如果配置成功,您应该会看到类似以下的消息:Hi username! You’ve successfully authenticated, but GitHub does not provide shell access.

  4. 使用SSH URL克隆远程仓库

    git clone git@github.com:username/repo.git
    

使用主机认证信息的配置文件~/.netrc

一个用于存储主机认证信息的配置文件,主要在命令行环境中自动化身份验证。
其作用是通过预先配置主机名、用户名和密码等信息,使得与远程服务交互时无需输入凭证,自动进行身份验证。通过在 .netrc 中设置这些信息,命令行工具能够在没有用户干预的情况下访问这些服务。
这对于自动化任务、批处理作业,或者频繁访问需要认证的远程服务非常有用。

.netrc 文件的基本格式,通常包括以下元素:

  • machine: 主机名或服务域名(如 github.com)。
  • login: 用于登录该主机的用户名。
  • password: 对应的密码或者身份验证令牌(如 GitHub 的个人访问令牌)。

配置方式

直接通过编辑该文件来实现
如果文件不存在的话,自己创建一个

示例:
.netrc 文件配置了两个主机的认证信息

# 对于 github.com,用户名是 my-username,密码是 my-password
machine github.com
login my-username
password my-password# 对于 example.com,用户名是 my-user,密码是 my-secret-password
machine example.com
login my-user
password my-secret-password

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

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

相关文章

#渗透测试#SRC漏洞挖掘#云技术基础03之容器相关

目录 一、Podman相关 &#xff08;一&#xff09;Podman简介 &#xff08;二&#xff09;Pod相关操作 二、容器相关 &#xff08;一&#xff09;容器概念 &#xff08;二&#xff09;容器的历史发展 &#xff08;三&#xff09;Capabilities相关 三、Kubernetes&#x…

前端搭建低代码平台,微前端如何选型?

目录 背景 一、微前端是什么&#xff1f; 二、三大特性 三、现有微前端解决方案 1、iframe 2、Web Components 3、ESM 4、EMP 5、Fronts 6、无界&#xff08;文档&#xff09; 7、qiankun 四、我们选择的方案 引入qiankun并使用&#xff08;src外层作为主应用&#xff09; 主应…

Ubuntu 22.04.4 LTS + certbot 做自动续签SSL证书(2024-11-14亲测)

certbot 做自动续签SSL证书 为了为您的域名 csbst.xyz 设置 SSL 证书并启用 HTTPS&#xff0c;您可以使用 Certbot。Certbot 是一个易于使用的客户端&#xff0c;它可以自动获取和安装 SSL/TLS 证书&#xff0c;以便使您的网站支持 HTTPS。 以下是在您的服务器上使用 Certbot …

Windows VSCode .NET CORE WebAPI Debug配置

1.安装C#插件 全名C# for Visual Studio Code&#xff0c;选择微软的 2. 安装C# Dev Kit插件 全名C# Dev Kit for Visual Studio Code&#xff0c;同样是选择微软的 3.安装Debugger for Unity 4.配置launch.json 文件 {"version": "0.2.0","config…

git分支合并到远程后如何回滚合并

在GitLab中删除远程仓库的某个特定commit并不是一个直接的操作&#xff0c;因为Git版本控制系统的设计是为了保持历史记录的完整性和不可变性。然而&#xff0c;你可以通过以下步骤来实现删除某个特定的commit&#xff1a; 回退到目标commit之前的状态&#xff1a; 首先&#x…

C++——视频问题总结

1、C和C的区别 CC面向过程对象注重程序的实现逻辑程序的整体设计内容C语言采用了一种有序的编程方法——结构化编程&#xff1a;将一个大型程序分解为一个个小型的&#xff0c;易于编写的模块&#xff0c;所有模块有序调动&#xff0c;形成了一个程序的完整的运行链C将问题分解…

如何为 SeaTunnel 配置 MySQL 用户并授予权限

在使用 SeaTunnel 进行数据处理与传输时&#xff0c;保障数据源的连接与权限配置尤为重要。本文将逐步解析如何在 MySQL 中创建用于 SeaTunnel 访问的用户&#xff0c;并授予其适当的权限&#xff0c;以满足不同操作需求。 1. 创建用户 在 MySQL 中&#xff0c;创建用户是配置…

Linux——GPIO输入输出裸机实验

学习了正点原子Linux环境下的GPIO的输入输出的裸机实验学习&#xff0c;现在进行一下小结&#xff1a; 启动文件start.S的编写 .global _start .global _bss_start _bss_start:.word __bss_start.global _bss_end _bss_end:.word __bss_end_start:/*设置处理器进入SVC模式*/m…

Cyberchef配合Wireshark提取并解析TCP/FTP流量数据包中的文件

前一篇文章中讲述了如何使用cyberchef提取HTTP/TLS数据包中的文件,详见《Cyberchef配合Wireshark提取并解析HTTP/TLS流量数据包中的文件》,链接这里,本文讲述下如何使用cyberchef提取FTP/TCP数据包中的文件。 FTP 是最为常见的文件传输协议,和HTTP协议不同的是FTP协议传输…

深度学习和图像处理

看来你对深度学习和图像处理很感兴趣呢&#xff0c;让我来一一解答你的疑惑吧。 深度学习高纬度特征 首先&#xff0c;我猜你是想问“深度学习中的高维特征”吧。在深度学习中&#xff0c;随着网络层数的加深&#xff0c;网络的感受野逐渐变大&#xff0c;语义表达能力也随之增…

51c大模型~合集42

我自己的原文哦~ https://blog.51cto.com/whaosoft/11859244 #猎户座 「草莓」即将上线&#xff0c;OpenAI新旗舰大模型曝光&#xff0c;代号「猎户座」 ChatGPT 要进化了&#xff1f; 本月初&#xff0c;OpenAI 创始人、CEO 山姆・奥特曼突然在 X 上发了一张照片&#xff0…

Object类中的方法

Object类提供了如下几个常用方法&#xff1a; Class<?> getClass()&#xff1a;返回该对象的运行时类。boolean equals(Object obj)&#xff1a;判断指定对象与该对象是否相等。int hashCode()&#xff1a;返回该对象的hashCode值。在默认情况下&#xff0c;Object类的…

【NOIP提高组】潜伏者

【NOIP提高组】潜伏者 &#x1f490;The Begin&#x1f490;点点关注&#xff0c;收藏不迷路&#x1f490; R国和S国正陷入战火之中&#xff0c;双方都互派间谍&#xff0c;潜入对方内部&#xff0c;伺机行动。 历尽艰险后&#xff0c;潜伏于 S 国的R 国间谍小C 终于摸清了S 国…

深入理解 `@TableId(type = IdType.AUTO)`:使用方法及其与其他主键生成策略的区别

在MyBatis-Plus&#xff08;简称MP&#xff09;中&#xff0c;TableId 注解是用来标注实体类中主键的字段的&#xff0c;而 type IdType.AUTO 是一个常见的配置选项&#xff0c;它指定了主键的生成策略。在实际开发中&#xff0c;如何配置主键生成策略对数据库的性能和稳定性有…

安培环路定理

回忆 静电场中的回路定理&#xff1a;→静电场是保守场 安培环路定理 1、圆形回路包围无限长载流直导线 &#xff08;1&#xff09;回路逆时针 &#xff08;2&#xff09;回路顺时针 规定&#xff1a; 回路正向由右手螺旋定则判断&#xff08;根据回路绕行方向&#xff0c;…

Locally Linear Embedding (LLE)

Locally Linear Embedding (LLE) Locally Linear Embedding (LLE) 是一种非线性降维算法&#xff0c;通常用于高维数据的流形学习。其核心思想是&#xff1a;假设数据点在局部是线性结构&#xff0c;通过保留每个数据点的局部线性结构关系&#xff0c;将数据嵌入到低维空间中。…

wsl配置ubuntu22.04,并配置docker

wsl配置ubuntu22.04&#xff0c;并配置docker 文章目录 wsl配置ubuntu22.04&#xff0c;并配置docker一、在Windows上安装Linux子系统前提条件安装步骤 二、wsl安装系统到其他盘①查看wsl运行状态&#xff0c;将其保持在关闭状态②导出当前Linux的镜像③注销之前的系统并检查④…

「QT」文件类 之 QDir 目录类

✨博客主页何曾参静谧的博客&#x1f4cc;文章专栏「QT」QT5程序设计&#x1f4da;全部专栏「Win」Windows程序设计「IDE」集成开发环境「UG/NX」BlockUI集合「C/C」C/C程序设计「DSA」数据结构与算法「UG/NX」NX二次开发「QT」QT5程序设计「File」数据文件格式「UG/NX」NX定制…

expo5.2运行web报错Cannot find module ‘react‘

修改app.json中的web output 配置为 ‘single’ 可以解决 expo run web 这个错误问题 "web": {"bundler": "metro","output": "single","favicon": "./assets/images/favicon.png"},相关链接&#xff1…

Xcode 16 pod init失败的解决方案

目录 前言 一、错误重现 二、解决方案 1.右击项目修改文件展示方式 2.修改.xcodeproj文件 3.参考文档 前言 我们使用Xcode创建新项目之后&#xff0c;执行pod init报错。我们看一下如何解决。 一、错误重现 RuntimeError - PBXGroup attempted to initialize an object …