Git SSH 密钥自动配置脚本使用指南 🚀


目录导航 📚


简介 ✨

本仓库提供两个高效自动化脚本,专门用于快速配置 Gitee 和 GitHub 的 SSH 密钥连接。这些脚本采用全自动智能化流程,用户只需进行简单交互即可完成从 Git 环境检测到 SSH 连接测试的完整配置流程。

🎯 解决痛点

  • 传统配置复杂:手动配置 SSH 密钥需要多个步骤,容易出错
  • 平台差异处理:不同代码托管平台(Gitee/GitHub)配置要求不同
  • 系统兼容性:不同操作系统和发行版的环境差异

📊 核心价值

通过自动化脚本,将原本需要 10-15 分钟的手动配置过程缩短至 2-3 分钟,大幅提升开发环境 setup 效率!


功能特点 🌟

🔧 全自动化体验

  • 智能环境检测:自动识别系统类型和包管理器
  • 一键式安装:从 Git 安装到 SSH 配置全程自动化
  • 交互式引导:关键步骤等待用户确认,避免误操作

🌍 多平台兼容

平台 支持情况 特色功能
Linux ✅ 全面支持 自动识别发行版(Debian/Ubuntu/CentOS/RHEL/openSUSE)
macOS ✅ 完美运行 原生终端支持,Homebrew 环境兼容
Windows ✅ Git Bash 完整的 Linux-like 环境体验

🛡️ 安全可靠

  • 强加密标准:使用 4096 位 RSA 加密算法
  • 密钥隔离:为每个平台生成独立的密钥对
  • 权限控制:自动设置正确的文件权限(700/600)

💡 用户友好设计

  • 彩色终端输出:不同信息级别使用不同颜色标识
  • 进度提示:清晰的步骤编号和状态反馈
  • 错误处理:完善的异常捕获和友好错误提示

一、使用方法 📋

1. 🐱 Gitee SSH 配置流程

1
2
3
4
5
# Vercel 仓库
bash <(curl -sL script.meimolihan.eu.org/sh/git-ssh/gitee-ssh-init.sh)

# Gitee 仓库
bash <(curl -sL gitee.com/meimolihan/script/raw/master/sh/git-ssh/gitee-ssh-init.sh)

Gitee-ssh

2. 🐱 GitHub SSH 配置流程

1
2
3
4
5
# Vercel 仓库
bash <(curl -sL script.meimolihan.eu.org/sh/git-ssh/github-ssh-init.sh)

# Gitee 仓库
bash <(curl -sL gitee.com/meimolihan/script/raw/master/sh/git-ssh/github-ssh-init.sh)

GitHub-ssh

🔄 详细执行流程

步骤 1: 环境检测与准备 🛠️

  • ✅ 检测系统类型和包管理器
  • ✅ 自动安装 Git(如未安装)
  • ✅ 验证 Git 版本兼容性

步骤 2: Git 全局配置 ⚙️

1
2
3
# 自动设置的用户配置
git config --global user.name "您的用户名"
git config --global user.email "您的邮箱"

步骤 3: SSH 密钥生成 🔑

  • ✅ 生成 4096 位 RSA 密钥对
  • ✅ 使用邮箱作为密钥注释标识
  • ✅ 密钥文件自动命名和存储

步骤 4: 公钥添加指导 👨‍💻

1
2
3
4
5
==================================================
您的 SSH 公钥如下(请完整复制):
ssh-rsa AAAAB3NzaC1yc2E... meimolihan@gmail.com
==================================================
请打开 Gitee 添加页面:https://gitee.com/profile/sshkeys

步骤 5: 自动配置写入 📝

  • ✅ 创建 ~/.ssh/config 文件
  • ✅ 添加平台特定的 SSH 配置
  • ✅ 更新 known_hosts 文件

步骤 6: 连接测试验证 ✅

1
2
3
4
5
# 测试 Gitee 连接
ssh -T git@gitee.com

# 测试 GitHub 连接
ssh -T git@github.com

⏱️ 时间预估

  • 首次运行:约 2-3 分钟(包含用户交互时间)
  • 后续运行:约 30 秒(复用现有配置)

二、脚本详解 🔍

🏗️ 架构设计

模块化函数设计

1
2
3
4
5
6
7
8
# 主要功能模块
install_git_if_needed() # 环境检测与安装
step_git_config() # Git 配置设置
step_gen_key() # 密钥生成管理
step_show_pub_and_wait() # 用户交互引导
step_ssh_config() # SSH 配置写入
step_known_hosts() # 主机密钥管理
step_test() # 连接测试验证

错误处理机制

1
2
3
4
set -euo pipefail  # 严格错误处理模式
# -e: 命令失败立即退出
# -u: 使用未定义变量时报错
# -o pipefail: 管道命令失败整体失败

🔄 智能适配逻辑

多系统包管理器检测

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
install_git_if_needed() {
if [ -f /etc/debian_version ]; then
# Debian/Ubuntu 系统
sudo apt-get update -qq && sudo apt-get install -y git
elif [ -f /etc/redhat-release ]; then
# CentOS/RHEL 系统
if command -v dnf &>/dev/null; then
sudo dnf -y install git # 新版本使用 dnf
else
sudo yum -y install git # 老版本使用 yum
fi
elif [ -f /etc/SuSE-release ] || [ -f /etc/SUSE-brand ]; then
# openSUSE 系统
sudo zypper -n install git
else
log_error "未识别的 Linux 发行版"
exit 1
fi
}

📊 平台特性对比

功能特性 Gitee 脚本 GitHub 脚本 差异说明
连接端口 标准 22 端口 22 + 443 端口 GitHub 支持 HTTPS 端口备用
主机验证 gitee.com ssh.github.com GitHub 使用专用 SSH 端点
欢迎消息 Gitee 个性化欢迎语 GitHub 官方欢迎信息 平台特定的连接成功提示
配置优化 标准 SSH 配置 多端口备用配置 GitHub 针对网络环境的优化

三、配置说明 ⚙️

🎛️ 自定义变量调整

基础身份配置

1
2
3
4
5
6
7
8
9
10
11
# 📍 在脚本开头修改这些变量即可个性化配置

# Gitee 专用配置
GITEE_USER="meimolihan" # 您的 Gitee 用户名
GITEE_EMAIL="meimolihan@gmail.com" # 您的 Gitee 验证邮箱
KEY_COMMENT="$GITEE_EMAIL" # 密钥注释(建议使用邮箱)

# GitHub 专用配置
GITHUB_USER="meimolihan" # 您的 GitHub 用户名
GITHUB_EMAIL="meimolihan@gmail.com" # 您的 GitHub 验证邮箱
KEY_COMMENT="$GITHUB_EMAIL" # 密钥注释标识

文件路径配置

1
2
3
# 🔐 密钥文件存储路径(一般无需修改)
KEY_FILE="$HOME/.ssh/id_rsa_gitee" # Gitee 密钥路径
KEY_FILE="$HOME/.ssh/id_rsa_github" # GitHub 密钥路径

📁 生成的文件结构

1
2
3
4
5
6
7
~/.ssh/
├── 🗝️ id_rsa_gitee # Gitee 私钥(权限 600)
├── 🔓 id_rsa_gitee.pub # Gitee 公钥(权限 644)
├── 🗝️ id_rsa_github # GitHub 私钥(权限 600)
├── 🔓 id_rsa_github.pub # GitHub 公钥(权限 644)
├── ⚙️ config # SSH 主配置文件(权限 600)
└── 🌐 known_hosts # 可信主机列表(权限 644)

🔧 SSH 配置详解

优化后的 config 文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# Gitee 配置段
Host gitee.com
User git
Hostname gitee.com
IdentityFile ~/.ssh/id_rsa_gitee # 指定专用密钥
IdentitiesOnly yes # 只使用指定密钥
PreferredAuthentications publickey # 优先公钥认证

# GitHub 配置段(包含端口备用)
Host github.com
User git
Hostname ssh.github.com # GitHub SSH 专用端点
Port 443 # HTTPS 备用端口
IdentityFile ~/.ssh/id_rsa_github
IdentitiesOnly yes
PreferredAuthentications publickey

四、故障排除 🛠️

🔍 常见问题速查表

问题现象 可能原因 解决方案
❌ 脚本执行权限错误 文件未设置执行权限 chmod +x script-name.sh
❌ Git 安装失败 网络问题或镜像源错误 检查网络连接,更换镜像源
❌ 密钥生成失败 .ssh 目录权限问题 chmod 700 ~/.ssh
❌ SSH 连接超时 防火墙或网络限制 检查 22/443 端口是否开放
❌ 认证被拒绝 公钥未正确添加 重新复制完整公钥到平台

🐛 详细排错指南

1. 权限问题修复 🔐

1
2
3
4
5
# 完整的权限修复命令序列
chmod 700 ~/.ssh # SSH 目录权限
chmod 600 ~/.ssh/config # 配置文件权限
chmod 600 ~/.ssh/id_rsa_* # 所有私钥文件权限
chmod 644 ~/.ssh/*.pub ~/.ssh/known_hosts # 公钥和已知主机文件权限

2. 连接测试与诊断 🌐

1
2
3
4
5
6
7
# 详细连接测试(显示调试信息)
ssh -T -v git@gitee.com # 测试 Gitee 连接并显示详细日志
ssh -T -v git@github.com # 测试 GitHub 连接并显示详细日志

# 配置验证命令
ssh -G gitee.com # 显示最终使用的 SSH 配置
ssh-keygen -l -f ~/.ssh/id_rsa_gitee # 验证密钥指纹

3. 脚本调试技巧 🔧

1
2
3
4
5
6
7
8
# 语法检查
bash -n gitee-ssh-init.sh

# 详细执行跟踪
bash -x gitee-ssh-init.sh

# 输出重定向(用于日志分析)
./gitee-ssh-init.sh > setup.log 2>&1

💡 高级技巧

多平台密钥管理

1
2
3
4
5
6
7
8
# 查看所有密钥的指纹信息
for key in ~/.ssh/id_rsa_*; do
if [[ -f "$key" && ! "$key" == *.pub ]]; then
echo "密钥: $(basename $key)"
ssh-keygen -l -f "$key"
echo "---"
fi
done

配置备份与恢复

1
2
3
4
5
# 备份 SSH 配置
cp -r ~/.ssh ~/.ssh_backup_$(date +%Y%m%d)

# 恢复 SSH 配置(谨慎操作)
# cp -r ~/.ssh_backup_20241201/* ~/.ssh/

🎯 最佳实践建议

✅ 安全建议

  1. 定期更换密钥:建议每 6-12 个月更换一次 SSH 密钥
  2. 使用强密码:虽然脚本生成无密码密钥,但生产环境建议设置密钥密码
  3. 多因素认证:在平台端启用 2FA 增强安全性

✅ 维护建议

  1. 版本控制:将自定义配置的脚本版本进行 git 管理
  2. 文档更新:随着平台政策变化及时更新脚本和文档
  3. 测试验证:在重要变更前在测试环境验证脚本功能

📅 最后更新: 2024年1月
👨‍💻 作者: meimolihan
📧 联系方式: meimolihan@gmail.com
🐛 问题反馈: 欢迎提交 Issue 和 Pull Request 改进脚本功能