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。
相关推荐
Knight_AL3 小时前
基于 Netty 实现的 WebSocket 服务端
网络·websocket·网络协议
沫璃染墨4 小时前
从零入门计算机网络系列(一):计算机网络初识——从网络发展史到TCP/IP协议》
linux·网络·网络协议·tcp/ip·计算机网络
是个西兰花5 小时前
TCP套接字编程实战:从服务器搭建到多进程处理
服务器·网络协议·tcp/ip
Julien20047 小时前
管理 Ansible 配置文件
linux·运维·服务器·ssh·学习方法
Da Da 泓9 小时前
谈谈HTTP
网络·网络协议·http
要吃这碗饭9 小时前
YouTube 数据抓取出现 429/403 错误?2026 反爬机制拆解与爬虫选型指南
网络·爬虫·网络协议
YumiProxy9 小时前
代理IP自动切换实战:会话保持与请求头配置避坑指南
服务器·网络·网络协议·tcp/ip·ip
花间相见10 小时前
【计算基础|网络02】HTTP 原理:报文结构、方法语义与状态码
网络·网络协议·http
Multipath71212 小时前
无人载具的高可靠低时延聚合组网方案
网络·网络协议·安全·udp·智能路由器
雪雪爱冲浪12 小时前
ISP代理与住宅代理选型对比:从原理到实战
服务器·网络·网络协议·tcp/ip·接口隔离原则