如何避免每次向GitHub/Gitea推送代码时重复输入私钥?
Git 免密推送 GitHub 配置方法
你可以通过两种主流方式实现免密推送,根据当前使用的协议选择即可:
一、HTTPS 协议下启用凭据缓存
如果当前仓库用的是 HTTPS 地址,直接配置 Git 凭据缓存就能自动保存用户名密码:
- 临时缓存(默认15分钟):
git config --global credential.helper cache - 长期缓存(比如设置7天有效期,单位为秒):
git config --global credential.helper 'cache --timeout=604800' - 永久缓存(依托系统凭据管理器,更安全):
- Mac 系统:
git config --global credential.helper osxkeychain - Windows 系统:
git config --global credential.helper manager-core - Linux 系统(凭据会明文存在本地文件,需手动设置权限):
git config --global credential.helper store chmod 600 ~/.git-credentials
- Mac 系统:
二、切换到 SSH 协议(推荐,安全且长期有效)
如果不想依赖 HTTPS 的凭据缓存,改用 SSH 密钥认证是更稳妥的方案:
- 生成 SSH 密钥对(若已有则跳过):
按回车默认生成路径,可选设置密钥密码(增强安全性,后续可通过 ssh-agent 缓存)。ssh-keygen -t ed25519 -C "你的GitHub注册邮箱" - 将公钥添加到 GitHub:
执行命令查看公钥内容:
复制输出的全部文本,登录 GitHub 后进入「Settings」→「SSH and GPG keys」→「New SSH key」,粘贴内容并保存。cat ~/.ssh/id_ed25519.pub - 切换仓库远程地址为 SSH 格式:
先查看当前远程地址:
若显示为 HTTPS 地址,执行以下命令替换(替换成你的用户名和仓库名):git remote -vgit remote set-url origin git@github.com:你的GitHub用户名/仓库名.git
补充:SSH 密钥密码缓存(若设置了密钥密码)
如果生成 SSH 密钥时设置了密码,每次推送仍需输入的话,可通过 ssh-agent 缓存:
# 启动 ssh-agent eval "$(ssh-agent -s)" # 添加密钥到 agent ssh-add ~/.ssh/id_ed25519
内容的提问来源于stack exchange,提问作者Marcinnn123
相关产品推荐
相关产品推荐

