30. GitHub 项目配置与密钥管理
本章节提供在 RHEL 9(主机名 LinuxDC)上配置 Git 并与 GitHub 交互的完整指南,适用于以下两种常见场景:
- 在全新电脑上配置 Git 并上传全新项目到 GitHub
- 更换电脑后继续开发已有 GitHub 项目
示例项目名称:awesome-project
内容涵盖 SSH 密钥生成、Git 全局配置、远程仓库关联、自动化推送脚本建议、安全清理旧设备说明,以及常用命令速查表。
30.1 前提条件
- RHEL 9 已安装(参考第 1 章),主机名设置为
LinuxDC。 - 使用 SecureCRT 登录(SSH2 协议,端口 2222,参考第 9 章)。
- 具有 root 或 sudo 权限(建议使用普通用户
testuser操作 Git)。 - 已订阅并启用 EPEL 仓库(参考第 5 章)。
- GitHub 账户已注册并拥有个人访问令牌(PAT)或 SSH 密钥访问权限。
💡 提示:强烈推荐使用 SSH 协议而非 HTTPS,避免每次推送输入用户名/密码或 PAT。在 RHEL 10 中,Git 支持更多内置的凭证管理器和 SSH 增强选项。
30.2 安装与基本配置
30.2.1 安装 Git
dnf install -y git
git --version # 验证安装成功
30.2.2 配置 Git 全局信息
git config --global user.name "Your Name"
git config --global user.email "your_email@example.com"
git config --global init.defaultBranch main # 设置默认主分支为 main
git config --global core.editor vim # 设置默认编辑器为 vim
git config --list # 查看所有配置
30.3 场景 1:全新电脑上传新项目到 GitHub
步骤 1:生成 SSH 密钥对
ssh-keygen -t ed25519 -C "your_email@example.com" -f ~/.ssh/id_ed25519_github
# 直接回车使用默认路径,无需设置密码(或设置强密码后需 ssh-agent 管理)
步骤 2:将公钥添加到 GitHub
-
复制公钥:
cat ~/.ssh/id_ed25519_github.pub -
登录 GitHub → Settings → SSH and GPG keys → New SSH key → 粘贴公钥并保存。
步骤 3:测试 SSH 连接
ssh -T git@github.com
# 成功应显示:Hi username! You've successfully authenticated...
步骤 4:创建并初始化项目
mkdir awesome-project && cd awesome-project
git init
echo "# awesome-project" > README.md
git add README.md
git commit -m "Initial commit"
步骤 5:关联远程仓库并推送
git remote add origin git@github.com:your-username/awesome-project.git
git branch -M main
git push -u origin main
30.4 场景 2:更换电脑后继续开发已有项目
步骤 1:克隆仓库(使用 SSH)
git clone git@github.com:your-username/awesome-project.git
cd awesome-project
步骤 2:验证 SSH 密钥(若未配置)
重复 30.3 中的步骤 1–3,确保当前电脑的 SSH 公钥已添加到 GitHub。
步骤 3:拉取最新代码
git pull origin main
30.5 自动化推送脚本建议
创建一键推送脚本(适用于频繁提交场景):
vim ~/git-push.sh
# 内容:
#!/bin/bash
if [ -z "$1" ]; then
echo "请输入提交信息"
exit 1
fi
git add .
git commit -m "$1"
git push origin main
使用:
chmod +x ~/git-push.sh
~/git-push.sh "fix bug in login page"
30.6 安全清理旧设备
更换电脑后,应从旧设备移除访问权限:
- 删除旧 SSH 密钥:
- 本地:
rm ~/.ssh/id_ed25519_github* -
GitHub:Settings → SSH and GPG keys → 删除旧密钥
-
撤销旧 PAT(若使用 HTTPS):
-
GitHub → Settings → Developer settings → Personal access tokens → 删除旧令牌
-
检查旧设备是否仍有克隆仓库:
- 删除本地仓库文件夹
- 确保旧设备不再有
~/.ssh/中的对应私钥
30.7 常用命令速查表
| 功能 | 命令 |
|---|---|
| 查看当前分支与状态 | git status |
| 切换分支 | git checkout main / git switch main |
| 创建并切换新分支 | git checkout -b feature/new-login |
| 合并分支 | git checkout main && git merge feature/new-login |
| 查看提交历史 | git log --oneline --graph --decorate |
| 撤销最后一次提交(保留更改) | git reset HEAD^ |
| 强制推送(覆盖远程历史) | git push --force origin main (谨慎使用) |
| 拉取并合并远程更改 | git pull origin main |
| 暂存所有更改 | git add . |
| 提交更改 | git commit -m "message" |
| 丢弃工作区更改 | git restore . |
| 查看远程仓库 | git remote -v |
| 添加远程仓库 | git remote add origin git@github.com:username/repo.git |
30.8 常见问题与排查
-
问题 1:
Permission denied (publickey)
解决:确认公钥已添加到 GitHub,私钥权限为 600(chmod 600 ~/.ssh/id_ed25519_github),测试ssh -T git@github.com。 -
问题 2:
fatal: refusing to merge unrelated histories
解决:git pull origin main --allow-unrelated-histories(仅首次合并时使用)。 -
问题 3:推送被拒绝(non-fast-forward)
解决:先git pull合并远程更改,或强制推送(git push --force)但小心覆盖他人提交。 -
问题 4:旧电脑仍有访问权限
解决:立即从 GitHub 删除对应 SSH 密钥或 PAT。
🧾 总结:
本章提供了 GitHub 项目配置与密钥管理的完整、标准流程,覆盖全新配置、项目迁移、多设备协作、自动化脚本以及安全清理。熟练掌握这些步骤,可显著提升代码管理效率与安全性,是 Linux 运维人员与开发者的核心技能之一。