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 以 [email protected]: 开头 ,则使用的是 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生成公钥

[email protected]替换为自己的邮箱

复制代码
ssh-keygen -t rsa -C [email protected]

这样就生成了密钥一般存储在(/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: [email protected]: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。

相关推荐
modelmd15 分钟前
配置代理服务器访问github、google
github
xianyinsuifeng7 小时前
FastAPI + OpenAI 模型 的 GitHub 项目结构模板
github·fastapi
freejackman9 小时前
Git从入门到精通
git·gitee·gitlab·github
Silence4Allen11 小时前
零基础用 Hexo + Matery 搭建博客|Github Pages 免费部署教程
github·hexo·博客搭建·matery
qianmoQ11 小时前
GitHub 趋势日报 (2025年05月16日)
github
兔子坨坨12 小时前
pycharm连接github(详细步骤)
windows·git·学习·pycharm·github
大大小小聪明19 小时前
Git合并多个提交方法详解
git·github
Yvonne爱编码1 天前
CSS- 4.1 浮动(Float)
前端·css·html·github·html5·hbuilder
冷yan~1 天前
GitHub文档加载器设计与实现
java·人工智能·spring·ai·github·ai编程
qianmoQ2 天前
GitHub 趋势日报 (2025年05月14日)
github