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

Github两种鉴权模式PAT与SSH

Github两种鉴权模式PAT与SSH

文章目录

  • Github两种鉴权模式PAT与SSH
    • 1. PAT鉴权
    • 2. SSH鉴权
    • 3.两种鉴权的切换

1. PAT鉴权

通过 HTTPS 协议克隆和推送代码,使用用户名/密码或个人访问令牌(PAT)鉴权,所以PAT是与HTTPS协议相关的。该鉴权方法早期支持直接输入用户名和密码,但自 2021 年起,GitHub 要求改用 Personal Access Token(PAT) 替代密码。

一个使用示例:

git clone https://github.com/username/repo.git
git push origin main  # 会提示输入用户名和 PAT

当我们需要使用到PAT的时候,生成步骤如下:
首先进入Github中的Settings,然后进入Developer settings,选择Token(classic),然后选择Generate new token,生成的具体页面如下

然后在页面最底层选择生成,然后复制你的Token,切记这个Token只能复制一次,如果忘了就得重新生成,然后我们就可以在推送的时候使用这个PAT密钥了,但每次推送的时候都需要输入一遍密钥非常不友好,可以使用下列的命令将密钥存储起来

git config --global credential.helper cache

2. SSH鉴权

SSH是通过非对称加密(公钥/私钥对)验证身份,无需每次输入密码。适用于频繁与仓库交互(如开发者日常推送)。需要更高安全性的场景(密钥比密码更难破解)。

具体使用如下

1.检查是否已有 SSH 密钥

首先查看是否已经存在密钥

ls -al ~/.ssh

其中带.pub的是公钥,其余的是密钥,如果看到了诸如id_ed25519或者id_rsa之类的文件,说明已经存在密钥,这些文件名不同代表其使用了不同的加密算法。

2.生成新的 SSH 密钥

如果没有密钥则使用下列方法进行生成

ssh-keygen -t ed25519 -C "your_email@example.com"
# 指定使用ed25519加密算法
# 或者指定使用rsa算法,密钥长度为4096个字符
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

3.将 SSH 密钥添加到 ssh-agent

启用ssh-agent

eval "$(ssh-agent -s)"  # 确保 ssh-agent 运行

将密钥添加到ssh-agent中

ssh-add ~/.ssh/id_ed25519

运行以下命令复制公钥,或者也可以手动打开复制

cat ~/.ssh/id_ed25519.pub | clip

4.将公钥添加到Github

登录 GitHub点击右上角头像SettingsSSH and GPG keys

点击 New SSH key

Title:填写标识(如 My Windows PC)。

Key type:保持默认 Authentication Key

Key:粘贴剪贴板中的公钥内容(以 ssh-ed25519ssh-rsa 开头)。

点击 Add SSH key

5.测试SSH连接

输入

ssh -T git@github.com

如果看到这样的回复,则连接成功

$ Hi 你的用户名! You've successfully authenticated, but GitHub does not provide shell access.

3.两种鉴权的切换

如果你一开始使用的是https配置仓库即使用了PAT令牌,想切换到ssh鉴权,那么可以先使用如下命令查看仓库使用的是哪种配置

git remote -v

可以看到我一开使用的是https

 sjh  sjhR9000X  ~/Documents/Markdown_Note  master  git remote -v
origin	https://github.com/shenmuxin/Markdown_Note.git (fetch)
origin	https://github.com/shenmuxin/Markdown_Note.git (push)

我可以使用如下命令来切换到ssh鉴权

git remote set-url origin <你的ssh url>

可以看到我切换成功了

 sjh  sjhR9000X  ~/Documents/Markdown_Note  master  git remote -v
origin	git@github.com:shenmuxin/Markdown_Note.git (fetch)
origin	git@github.com:shenmuxin/Markdown_Note.git (push)

相关文章:

  • 【Shell 脚本入门】轻松上手的实战指南
  • DIFY教程第三弹:构建一个智能生成图片的Agent
  • 【OSG学习笔记】Day 13: 事件处理——响应键盘与鼠标
  • 高压直流输电MATLAB/simulink仿真模型+说明文档
  • UDP协议详解+代码演示
  • Nginx支持HTTP2/HTTP3的并用CURL测试
  • 微信小程序连续多个特殊字符自动换行解决方法
  • 在 Ubuntu 24.04 LTS 一台机子上同时部署Dify 1.3.1 和 RAGflow 0.18.0
  • 系统架构-软件可靠性
  • 如何删除此电脑上的迅雷下载、WPS云盘、百度网盘
  • yolov8+kalman 实现目标跟踪统计人流量
  • Spring的BeanFactory和FactoryBean的区别
  • Hibernate-Core (CVE-2020-25638)
  • 线性代数——行列式⭐
  • vue mixin混入与hook
  • vscode以管理员身份运行报错
  • Nacos源码—1.Nacos服务注册发现分析一
  • 蓝桥杯2025年第十六届省赛真题-可分解的正整数
  • Docker镜像仓库技术深度解析
  • 【环境配置】Mac电脑安装运行R语言教程 2025年
  • 习近平:在庆祝中华全国总工会成立100周年暨全国劳动模范和先进工作者表彰大会上的讲话
  • 牛市早报|今年国内核电项目审批首次开闸,离境退税起退点下调
  • 原创话剧风向标!这个展演上《大宅门》《白鹿原》先后上演
  • 因高颜值走红的女通缉犯出狱后当主播自称“改邪归正”,账号已被封
  • 持续更新丨伊朗港口爆炸事件已致561人受伤
  • 美联储官员:货币政策不会立即改变,金融市场波动或致美国经济增长承压