HTTPS 推送失败?改用 SSH 一键搞定

1. 问题背景

在自动化测试环境中推送代码时,origin 原本配置为 HTTPS 地址:

bash 复制代码
https://github.com/XXX/ProjiectName.git

该环境没有交互式终端,无法手动输入账号密码,也没有安装 gh 或配置 credential helper,因此执行 git push 时报错:

text 复制代码
could not read Username for 'https://github.com'

2. 先确认 SSH 可用

本机已有密钥 ~/.ssh/id_ed25519,并且执行:

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

返回了 Hi githubname,说明 GitHub 已识别这把公钥,SSH 通道可用。

3. 改 remote 再用 SSH 推送

将 remote 地址从 HTTPS 切换为 SSH 格式:

bash 复制代码
git remote set-url origin git@github.com:XXX/ProjiectName.git
git push -u origin HEAD

Git 改走 git@github.com:...,使用 SSH 密钥完成认证,推送成功。

4. 与 HTTPS 的差异对比

对比项 HTTPS SSH
地址形态 https://github.com/业主/仓库.git git@github.com:业主/仓库.git
认证方式 Token / 密码 / credential helper ~/.ssh 私钥
本场景表现 无凭据 → 失败 已有密钥且已加入 GitHub → 成功

5. 注意事项

  • git remote set-url 只修改当前仓库的 remote URL,不会改动全局 git config 中的用户名、邮箱等设置。
  • 切换后,在本仓库内执行 git push / git pull 都会默认走 SSH。
  • 若后续仍需使用 HTTPS,需要配置 Personal Access Token,或安装并登录 gh
相关推荐
2401_868534786 小时前
指令集-最常用 Linux 命令速查手册(整合版)
linux·网络协议
dog2508 小时前
再论 TCP 的流式传输
网络·网络协议·tcp/ip
zhendianluli9 小时前
VS Code Remote-SSH 连接故障排查手册(精详版)
运维·ssh
喜欢吃燃面11 小时前
HTTP协议深度解析:从请求响应到状态管理与安全传输
linux·网络协议·学习
傻啦嘿哟12 小时前
某宝商品爬虫:破解反爬的终极方案(含IP代理池+User-Agent轮换)
爬虫·网络协议·tcp/ip
CZIDC14 小时前
华为服务器TS200-2280 V2 iBMC导入SSL证书后问题案例分析
服务器·https·ssl
Zkaisen15 小时前
【Gitee】SSH 公钥、GPG 公钥、私人令牌的区别
运维·gitee·ssh
tyung16 小时前
znet 数据编解码:字节流怎么变成消息
后端·网络协议·go
头茬韭菜17 小时前
功能点 11-12:客户端、RPC 通信、监控与安全
网络协议·安全·rpc·fluss