当前位置: 首页 > article >正文

Github中PAT和SSHKeys区别


title: Github中PAT和SSHKeys区别
date: 2024-11-28 18:02:27
categories: 科研工具
description: “今天研究两台设备共同运行Github项目的问题,关于一般项目配置个人访问令牌和SSHkeys的问题”
tags: Github使用


自己使用github一直没搞懂这些公钥、秘钥啥的,今天搞懂了一点就记录一下

PAT和SSH keys区别

在GitHub中,token和SSH keys都是用于身份验证和安全访问仓库的方法。Token是一种 访问令牌,可以代替密码进行身份验证。

GitHub允许创建具有不同权限级别的个人访问令牌(Personal Access Token, PAT),用于命令行操作、第三方应用等。

SSH keys是一种加密方法,用于在两个通信方之间建立一个安全的连接。GitHub允许创建SSH keys,用于将本地git客户端与GitHub仓库安全关联。

如果 URL 以 https:// 开头,则使用的是 HTTPS 协议,通常需要使用 Personal Access Tokens (PATs) 进行身份验证。

如果 URL 以 git@github.com: 开头,则使用的是 SSH 协议,依赖于 SSH 公钥 进行身份验证。

  • SSH
    • 用于通过 SSH 协议进行 Git 操作(如 git pushgit pull)和与 GitHub 进行安全通信。
    • 基于公钥加密,使用密钥对(公钥和私钥)进行身份验证
    • 保存在本地,适合长期使用,在每台设备上生成和管理密钥对
    • 每次要输入密码
  • PAT
    • 通过 HTTPS 协议进行 Git 操作,或通过 GitHub API 进行身份验证
    • 类似于密码,没有加密,但是就只能看一次,而且有过期时间,需要重新设置
    • 可以细化权限
    • 可以不用输入密码,详见以前写的改bug的博客里

SSH keys 同一个Github账号关联多个设备

我的需求是:两个设备上面运行同一个项目

SSH keys是跟账户相关,Deploy keys是某个项目下面的settings中添加的,只跟这个项目有关

  • 【Git/SVN】 SSH keys和Deploy key区别
    • github账户的SSH keys,相当于这个账号的最高级key,只要是这个账号有的权限(任何项目),都能进行操作。
    • 仓库的Deploy keys,顾名思义就是这个仓库的专有key,用这个key,只能操作这个项目,其他项目都没有权限。
      • Deploy Keys不适合多人开发的项目,反正我也没用过

SSH 公钥

  • 用途:用于通过 SSH 协议进行 Git 操作(如 git pushgit pull)以及访问 GitHub API。

  • 安全性:通过公钥加密认证,提供高度安全的连接。

  • 配置:需要在每台设备上生成一对密钥(私钥和公钥),然后将公钥添加到 GitHub 账户中。

  • 适用场景:适用于需要频繁进行 Git 操作的开发者,特别是在本地开发环境中。

流程

ls ~/.ssh

如果你看到类似 id_rsaid_rsa.pub 的文件,说明已有 SSH 密钥。可以跳过生成新密钥的步骤,直接使用现有密钥。

1生成密钥

使用SSH自带的密钥生成工具,如ssh-keygen生成公钥

xxx@qq.com替换为自己的邮箱

ssh-keygen -t rsa -C xxx@qq.com

这样就生成了密钥一般存储在(/Users/你的用户名/.ssh/id_rsa)这样的路径下面

2 复制公钥

复制公钥内容

在终端中运行以下命令将公钥内容复制到剪贴板:

pbcopy < ~/.ssh/id_rsa.pub

如果 pbcopy 不可用,可以手动复制:

cat ~/.ssh/id_rsa.pub

然后选择并复制输出的完整内容。

3 github上面添加公钥

导航到 SSH 和 GPG 密钥设置

  • 点击右上角的头像,选择 Settings(设置)
  • 在左侧菜单中,点击 SSH and GPG keys

添加新的 SSH 密钥

  • 点击 New SSH key 按钮。
  • Title:输入一个描述性名称,如“ MacBook SSH 密钥”。
  • Key:粘贴你复制的公钥内容。
  • 点击 Add SSH key

4 新设备可能需要配置账号以及输入密码

git config --global user.email "注册用的邮箱"
git config --global user.name "用户名"

5 进行仓库的push和pull

如何使用git(同一账号)在多台电脑协同做工

别的可能的报错「详细教程」使用git将本地项目上传至Github仓库(MacOS为例)

配置个人访问令牌(PATs)

我之前的需求是Hexo项目可以进行上传,我也不知道为啥配置了PATs,尝试一下能不能

  • Repository access 部分,选择 Only select repositories 并指定目标仓库

今天我才知道,我是两个都配置了,在hexo项目_config.yml项目修改项目url
如果是ssh的就每次输入私钥密码
如果是http的就在每次有令牌,不用自己输入密码,但是定期会过期

deploy:
    type: git
    repository: git@github.com:xxx/xxx.github.io.git
    branch: mater

需要定期更新

【Debug】hexo-github 令牌认证

[GitHub使用Personal access token ](https://www.cnblogs.com/chenyablog/p/15397548.html)

对于一些使用场景

  1. 多人协作的项目

    1. SSH+Github
    2. 每个开发者使用自己的 SSH 密钥,自己进行Github仓库和本地代码之间的的配置
    3. 项目管理者可以在设置仓库权限
      • 确保每个开发者在仓库中拥有适当的权限(如 ReadWriteAdmin)。
      • 可以通过 TeamsCollaborators 管理权限。
  2. 同一个账户多个设备之间

    1. 为每台设备生成独立的 SSH 密钥,并将所有公钥添加到 GitHub 账户中。
    2. 每台设备有独立的密钥,单台设备的密钥泄露不会影响其他设备。
    3. 可以在 GitHub 上单独撤销某台设备的密钥,而不影响其他设备。
  3. 对于有仓库限制权限的分配

    1. 推荐使用 SSH Deploy Keys

      1. 每个部署密钥仅限于特定仓库,减少权限过大的风险。
      2. 可以单独管理每个部署密钥,便于撤销或更新。
    2. 如果 Deploy Keys 不可用,考虑使用 Fine-grained PAT

      1. 可以为特定仓库和权限生成 PAT。

http://www.kler.cn/a/420022.html

相关文章:

  • python脚本实现csv中百度经纬度转84经纬度
  • ABE 中的隐藏属性:DIPPE(去中心化内积谓词加密)
  • Linux下,用ufw实现端口关闭、流量控制(二)
  • 腾讯云平台 - Stable Diffusion WebUI 下载模型
  • 【测试工具JMeter篇】JMeter性能测试入门级教程(七):JMeter断言
  • 基于python的汽车数据爬取数据分析与可视化
  • vue和react之间的区别?
  • 工业机器视觉-基于深度学习的托盘PCB识别
  • 【职业发展】从ETL到大数据:如何规划你的数据职业生涯?
  • Node.js HTTP模块详解:创建服务器、响应请求与客户端请求
  • AIoT赋能下的智慧园区管理系统,构建新一代智能园区
  • IDEA 2024 配置Maven
  • 【CSS in Depth 2 精译_064】10.3 CSS 中的容器查询相对单位 + 10.4 CSS 容器样式查询 + 10.5 本章小结
  • 数据处理与统计分析——07-Pandas的concat连接、merge()合并、多表查询、内/外/自连接查询操作
  • 【温州】《政务信息化项目软件开发费用测算规范》(DB 3303/T 059—2023)-省市费用标准解读系列23
  • 机器学习周志华学习笔记-第11章<特征选择与稀疏学习>
  • 计算机的错误计算(一百七十二)
  • 3dtile平移子模型以及修改 3D Tiles 模型的模型矩阵z平移
  • 用原生JS创建简易的axios
  • Django 视图层
  • openjdk17 jvm 对象 内存溢出 在C++源码体现
  • 数据仓库: 8- 数据仓库性能优化
  • 视频video鼠标移入移除展示隐藏(自定义控件)
  • 第22周:机器学习
  • 从Apache Solr 看 Velocity 模板注入
  • Android:生成Excel表格并保存到本地