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 操作的开发者,特别是在本地开发环境中。

流程

bash 复制代码
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 复制公钥

复制公钥内容

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

bash 复制代码
pbcopy < ~/.ssh/id_rsa.pub

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

bash 复制代码
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 新设备可能需要配置账号以及输入密码

bash 复制代码
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)\](https://www.cnblogs.com/chenyablog/p/15397548.html) ## 对于一些使用场景 1. **多人协作的项目** 1. SSH+Github 2. 每个开发者使用自己的 SSH 密钥,自己进行Github仓库和本地代码之间的的配置 3. 项目管理者可以在**设置仓库权限** : * 确保每个开发者在仓库中拥有适当的权限(如 `Read`、`Write`、`Admin`)。 * 可以通过 **Teams** 和 **Collaborators** 管理权限。 2. **同一个账户多个设备之间** 1. 为每台设备生成独立的 SSH 密钥,并将所有公钥添加到 GitHub 账户中。 2. 每台设备有独立的密钥,单台设备的密钥泄露不会影响其他设备。 3. 可以在 GitHub 上单独撤销某台设备的密钥,而不影响其他设备。 3. **对于有仓库限制权限的分配** 1. 推荐使用 SSH Deploy Keys 1. **每个部署密钥仅限于特定仓库**,减少权限过大的风险。 2. 可以单独管理每个部署密钥,便于撤销或更新。 2. 如果 Deploy Keys 不可用,考虑使用 Fine-grained PAT 1. 可以为**特定仓库和权限**生成 PAT。

相关推荐
患得患失94928 分钟前
【GitHub Workflows 基础(一)】认识 .github/workflows/ 下的多个工作流
github
木人舟1 小时前
github copilot接入openai-compatible模型以及去除安全限制的方法
github·copilot
五岁小孩2 小时前
一次性解决Github Enable two-factor authentication
github·2fa
guiyanakaung6 小时前
CMP 如何优雅的实现跨软件的拖拽功能
前端·github
HelloGitHub10 小时前
开源新旗舰 GLM-4.5:不想刷榜,只想干活儿
人工智能·开源·github
星际码仔11 小时前
Zread 和 DeepWiki 怎么选?一张图全搞懂
github·chatglm (智谱)
DogDaoDao11 小时前
GitHub开源项目Zerox:AI驱动的OCR革命
人工智能·深度学习·开源·github·ocr·图像识别·zerox
Albert_Lsk12 小时前
【2025/07/28】GitHub 今日热门项目
人工智能·开源·github·开源协议
C++ 老炮儿的技术栈1 天前
在 Scintilla 中为 Squirrel 语言设置语法解析器的方法
linux·运维·c++·git·ubuntu·github·visual studio
油泼辣子多加1 天前
2025年07月25日Github流行趋势
github