使用 SSH 密钥上传 GitHub 仓库流程

使用 SSH 密钥上传 GitHub 仓库流程

本文档总结了在 Linux/macOS(或 Windows Git Bash)环境下,通过 SSH 密钥上传代码到 GitHub 仓库的完整流程,方便重复使用。


1. 检查现有 SSH 密钥

bash 复制代码
ls -al ~/.ssh
  • 查看是否已有密钥文件:
    • 私钥:id_rsa 或 id_ed25519
    • 公钥:id_rsa.pub 或 id_ed25519.pub
  • 如果已有密钥,可以直接使用;如果没有,需要生成新的。

2. 生成新的 SSH 密钥(可选)

推荐使用 Ed25519 算法:

bash 复制代码
ssh-keygen -t ed25519 -C "your_email@example.com"
  • 默认保存在 ~/.ssh/id_ed25519
  • 设置密码(可选,但建议保护私钥)
  • 会生成:
    • 私钥:id_ed25519
    • 公钥:id_ed25519.pub

如果已有 RSA 密钥,也可以直接使用,不影响 SSH 功能。


3. 添加私钥到 ssh-agent

启动 ssh-agent:

bash 复制代码
eval "$(ssh-agent -s)"

添加私钥:

bash 复制代码
ssh-add ~/.ssh/id_rsa
# 或者如果是新密钥:
# ssh-add ~/.ssh/id_ed25519

确认添加成功:

text 复制代码
Identity added: /home/username/.ssh/id_rsa (your_email@example.com)

4. 将公钥添加到 GitHub

  1. 查看公钥内容:
bash 复制代码
cat ~/.ssh/id_rsa.pub
  1. 登录 GitHub → Settings → SSH and GPG keys → New SSH key
  2. 填写 Title(如 RackServer Key),粘贴公钥内容 → 点击 Add SSH key

如果之前已有旧密钥,也可以先删除再新增。


5. 测试 SSH 连接

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

第一次会提示信任 GitHub,输入 yes。

成功输出:

text 复制代码
Hi <username>! You've successfully authenticated, but GitHub does not provide shell access.

6. 配置仓库使用 SSH

  1. 查看远程地址:
bash 复制代码
git remote -v
  1. 如果显示 HTTPS 地址,需要切换为 SSH:
bash 复制代码
git remote set-url origin git@github.com:username/repo.git
  1. 验证远程地址:
bash 复制代码
git remote -v

应显示:

text 复制代码
origin  git@github.com:username/repo.git (fetch)
origin  git@github.com:username/repo.git (push)

7. 上传代码到 GitHub

bash 复制代码
# 添加修改
git add .

# 提交
git commit -m "Your commit message"

# 推送到 GitHub
git push -u origin main
  • 第一次 push 使用 -u 设置上游分支
  • 之后可以直接 git push,无需输入用户名和密码

8. 小提示

  • 以后克隆仓库也使用 SSH:
bash 复制代码
git clone git@github.com:username/repo.git
  • 错误的邮箱注释(ssh-keygen -C "wrong_email")不会影响 SSH 功能,只是用于标识。

此文档可作为模板,下次在新服务器或新环境中设置 SSH 上传 GitHub 仓库时直接参考。

相关推荐
阳光九叶草LXGZXJ11 小时前
达梦数据库-报错-15-列【XXX】长度超出定义
linux·运维·数据库·sql·学习
黄大刀12 小时前
DataPulse一款开箱即用的SCADA(四)-历史记录
运维·scada·动环
归秋14214 小时前
2026 企业 AI 办公工具选型指南:从评估框架到产品适配
大数据·运维·人工智能
Android系统攻城狮14 小时前
Linux Gstreamer深度解析之gst_audio_encoder_set_frame_max调用流程与实战(六十一)
android·linux·运维·音视频·gstreamer音视频·音视频进阶·gstreamer音视频进阶
硅基手札16 小时前
【Linux内核专栏 14】网络协议栈
linux·运维·网络协议
Maynor在掘金17 小时前
Nano Banana 2.1 来了!21 个真实案例 + 公开提示词,这份 Awesome 合集请收好
github
miofly17 小时前
ChatGPT 账号用户可免费使用 Auto-review 双智能体审查功能
开源·github
工作10年+,存储芯片行业18 小时前
Linux NVMe 中断排查与性能优化:CPU 亲和性
linux·运维·服务器·windows·性能优化·ssd·pcie
高频因子挖掘机18 小时前
第一次补历史行情:按股票拆,还是按日期拆请求?
后端·github·api
酣大智18 小时前
H3C MSR3600 交换机配置 SSH
网络·ssh·智能路由器