Github两种鉴权模式PAT与SSH

Github两种鉴权模式PAT与SSH

文章目录

1. PAT鉴权

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

一个使用示例:

bash 复制代码
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密钥了,但每次推送的时候都需要输入一遍密钥非常不友好,可以使用下列的命令将密钥存储起来

bash 复制代码
git config --global credential.helper cache

2. SSH鉴权

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

具体使用如下

1.检查是否已有 SSH 密钥

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

bash 复制代码
ls -al ~/.ssh

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

2.生成新的 SSH 密钥

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

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

bash 复制代码
eval "$(ssh-agent -s)"  # 确保 ssh-agent 运行

将密钥添加到ssh-agent中

bash 复制代码
ssh-add ~/.ssh/id_ed25519

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

bash 复制代码
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连接

输入

bash 复制代码
ssh -T git@github.com

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

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

3.两种鉴权的切换

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

bash 复制代码
git remote -v

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

bash 复制代码
 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鉴权

bash 复制代码
git remote set-url origin <你的ssh url>

可以看到我切换成功了

bash 复制代码
 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)
相关推荐
木子.李3472 小时前
ssh连接远程服务器相关总结
运维·服务器·ssh
晚风吹人醒.3 小时前
SSH远程管理及访问控制
linux·运维·ssh·scp·xshell·访问控制·远程管理
修己xj3 小时前
解决Github QQ邮箱注册难题:绕过“Unable to verify your captcha response”错误
github
AI首席情报员_阿布6 小时前
2026 GitHub 最火的 10 个 AI Agent 框架:普通开发者的选型指南
github
阿里嘎多学长11 小时前
2026-01-11 GitHub 热点项目精选
开发语言·程序员·github·代码托管
三两肉11 小时前
HTTPS ECDHE 握手全解析
网络协议·https·github·rsa·echde
啊湘12 小时前
vscode 使用 github (适用CURSOR等使用)
ide·vscode·github·cursor·mcp
Kiyra12 小时前
虚拟机假死?SSH 能连却卡 Logo 界面
运维·ssh
l1t13 小时前
利用DeepSeek辅助拉取GitHub存储库目录跳过特定文件方法
人工智能·github·deepseek
Hilaku13 小时前
我用 Gemini 3 Pro 手搓了一个并发邮件群发神器(附源码)
前端·javascript·github