使用 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 仓库时直接参考。

相关推荐
古法老登瞎折腾7 小时前
大数据智能运维实战(十一):运维 MCP 的工程化——权限、限流、审计与错误处理
java·大数据·运维·spring ai·mcp
琥珀.8 小时前
mysql中json数组转列表查询
linux·运维·服务器
dawnsky.liu8 小时前
在 RHEL 中使用 goose 实现远程主机管理
linux·运维·ai
Linux运维技术栈10 小时前
CVE-2026-91403 高危漏洞修复:Rocky Linux 9 多版本 JDK 环境清理实操
java·linux·运维
云上先途110 小时前
企业 AI 服务部署周期多久,会不会影响原有业务运转?
大数据·运维·人工智能
u13013011 小时前
GitHub 热榜项目:日榜(2026-10-27)
人工智能·github
执伞人ONLY11 小时前
AI知识库自动化知识加工没做对,人工整理永远追不上知识产生
运维·人工智能·自动化
叼烟扛炮11 小时前
Linux 学习笔记(三十三):线程互斥——互斥锁(Mutex)与死锁
linux·运维·服务器·笔记·学习·1024程序员节
zroooo12 小时前
GitHub Flow
github
无足鸟ICT12 小时前
【RHCA+】who命令(查看已登陆用户)
linux·运维·服务器