block-quote On this pagechevron-down
copy Copy chevron-down
关于Github 不支持密码问题
现在github不支持密码输入来push, pull
Copy // Some code
remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/wenkangwei/Project_TextImage_Generator.git/' (推荐)方法 1:使用 SSH 替代 HTTPS
SSH 是一种更安全的认证方式,推荐使用。
步骤:
生成 SSH 密钥 (如果还没有):
bash复制
Copy ssh-keygen -t rsa -b 4096 -C "your_email@example.com" 按提示操作,生成密钥对(id_rsa 和 id_rsa.pub)。
将公钥添加到 GitHub :
复制公钥内容:
bash复制
Copy cat ~/.ssh/id_rsa.pub 登录 GitHub,进入 Settings > SSH and GPG keys ,点击 New SSH key ,粘贴公钥并保存。
测试 SSH 连接 :
bash复制
Copy ssh -T git@github.com 如果看到 Hi username!,说明 SSH 配置成功。
使用 SSH 克隆仓库 :
将 HTTPS URL 替换为 SSH URL。例如:
bash复制
Copy git clone git@github.com:wenkangwei/Project_TextImage_Generator.git
方法 2:使用 Personal Access Token 替代密码
如果你仍然想使用 HTTPS,可以用 Personal Access Token(PAT)替代密码。
步骤:
生成 Personal Access Token :
登录 GitHub,进入 Settings > Developer settings > Personal access tokens 。
选择需要的权限(例如 repo 和 workflow)。
点击 Generate token ,复制生成的 Token(只会显示一次,请妥善保存)。
使用 Token 克隆仓库 :
在克隆时,将密码替换为 Token。例如:
bash复制
将 <TOKEN> 替换为你的实际 Token。
保存 Token 以避免重复输入 :
你可以将 Token 保存到 Git 的凭据管理器中:
bash复制
然后运行一次克隆或推送命令,输入用户名和 Token,Git 会将其保存。
方法 3:更新远程仓库 URL
如果你已经克隆了仓库,但使用的是 HTTPS,可以将其更新为 SSH 或使用 Token 的 HTTPS。
更新为 SSH:
查看当前远程仓库 URL:
bash复制
输出示例:
复制
更新为使用 Token 的 HTTPS:
更新 URL:
bash复制
将 <TOKEN> 替换为你的实际 Token。
如果坚持使用 HTTPS,请使用 Personal Access Token 替代密码。
remote: error: GH013: Repository rule violations found for refs/heads/main. remote: remote: - GITHUB PUSH PROTECTION remote: ————————————————————————————————————————— remote: Resolve the following violations before pushing again remote: remote: - Push cannot contain secrets remote:
这个错误提示表明 GitHub 的 Push Protection 功能检测到你的推送内容中可能包含敏感信息(如 API 密钥、密码、Token 等),因此拒绝了推送操作。这是 GitHub 为了保护用户数据安全而引入的功能。
步骤 1:检查推送内容中的敏感信息
查看 Git 提交记录:
bash复制
找到最近提交的文件和内容。
步骤 2:移除敏感信息
将敏感信息添加到 .gitignore :
如果敏感信息存储在某个文件中(如 .env),确保将该文件添加到 .gitignore 中:
bash复制
从 Git 历史记录中移除敏感信息 :
如果敏感信息已经提交到了 Git 历史记录中,需要使用 git filter-repo 或 BFG Repo-Cleaner 工具清理历史记录。
示例使用 git filter-repo:
bash复制
将 OLD_SECRET 替换为实际的敏感信息,NEW_SECRET 替换为占位符或空字符串。
步骤 3:重新提交并推送
步骤 4:使用环境变量管理敏感信息
为了避免将来再次出现类似问题,建议使用环境变量来管理敏感信息。
确保 .env 文件被添加到 .gitignore 中:
bash复制
步骤 5:禁用 GitHub Push Protection(不推荐)
如果你确认推送内容中没有敏感信息,但仍然被阻止,可以尝试禁用 GitHub 的 Push Protection 功能。
进入 GitHub 仓库的 Settings > Code security and analysis 。
找到 Push protection ,点击 Disable 。
注意 :禁用 Push Protection 会降低仓库的安全性,不推荐这样做。
Last updated 11 months ago