个人主页:云纳星辰怀自在
座右铭:“所谓坚持,就是觉得还有希望!”
Git SSH 完整配置与操作指南
1. SSH 基础概念与原理
1.1 SSH 协议概述
SSH(Secure Shell)是一种加密的网络传输协议,用于在不安全的网络中为网络服务提供安全的传输环境。Git 使用 SSH 协议实现安全的远程仓库访问和代码传输。
1.2 Git SSH 工作流程
- •身份验证:通过非对称加密技术验证用户身份
- •数据传输:所有数据传输都经过加密,防止中间人攻击
- •操作授权:基于密钥的访问控制,确保只有授权用户可以操作仓库
2. SSH 密钥生成与配置
2.1 生成 SSH 密钥对
# 生成 RSA 密钥对,-t 指定密钥类型,-b 指定密钥长度,-C 添加注释
ssh-keygen -t rsa -b 4096 -C "wangxiaoming@company.com"
# 执行过程详解:
# 1. 提示保存位置:直接回车使用默认路径 (/home/wangxiaoming/.ssh/id_rsa)
# 2. 设置密钥密码:输入强密码(建议8位以上包含大小写字母、数字和特殊字符)
# 3. 确认密码:再次输入相同密码
2.2 密钥文件说明
# 查看生成的密钥文件
ls -al ~/.ssh/
# 文件说明:
# id_rsa - 私钥文件(必须严格保密,权限设置为600)
# id_rsa.pub - 公钥文件(需要添加到GitLab服务器)
# known_hosts - 已知主机列表(自动记录连接过的主机密钥)
2.3 设置正确的文件权限
# 设置SSH目录权限(仅用户可读写执行)
chmod 700 ~/.ssh
# 设置私钥文件权限(仅用户可读写)
chmod 600 ~/.ssh/id_rsa
# 设置公钥文件权限(用户可读写,其他用户只读)
chmod 644 ~/.ssh/id_rsa.pub
# 设置已知主机文件权限
chmod 644 ~/.ssh/known_hosts
3. GitLab SSH 密钥配置
3.1 获取公钥内容
# 查看公钥内容
cat ~/.ssh/id_rsa.pub
# 输出示例:
# ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCw... wangxiaoming@company.com
3.2 GitLab 配置步骤
- 登录 GitLab:访问
http://175.15.61.142 - 进入个人设置:点击右上角头像 → Settings
- 导航到 SSH Keys:左侧菜单选择 SSH Keys
- 添加新密钥:
- •点击 "Add new key" 按钮
- •在 Key 字段粘贴公钥内容
- •在 Title 字段填写 "wangxiaoming's SSH Key"
- •设置过期时间(可选)
- •点击 "Add key" 完成添加
3.3 验证 SSH 配置
# 测试 SSH 连接到 GitLab 服务器
ssh -T git@175.15.61.142
# 成功响应示例:
# Welcome to GitLab, @wangxiaoming!
4. SSH 客户端配置优化
4.1 创建 SSH 配置文件
# 创建 SSH 配置目录(如果不存在)
mkdir -p ~/.ssh
# 编辑 SSH 配置文件
vim ~/.ssh/config
4.2 配置内容
# GitLab 服务器配置
Host 175.15.61.142
HostName 175.15.61.142
User git
Port 22
IdentityFile ~/.ssh/id_rsa
PreferredAuthentications publickey
# 连接超时设置(单位秒)
ConnectTimeout 10
# 保持连接心跳(防止超时断开)
ServerAliveInterval 60
ServerAliveCountMax 3
# 压缩传输(加快大文件传输)
Compression yes
# 日志级别(调试时使用)
# LogLevel DEBUG3
4.3 配置验证
# 测试配置是否正确
ssh -G git@175.15.61.142
# 检查特定主机的配置
ssh -G 175.15.61.142
5. Git 全局配置
5.1 设置用户信息
# 设置全局用户名(必须与 GitLab 账户一致)
git config --global user.name "wangxiaoming"
# 设置全局邮箱(必须与 GitLab 注册邮箱一致)
git config --global user.email "wangxiaoming@company.com"
# 设置默认文本编辑器
git config --global core.editor vim
# 设置默认分支名称
git config --global init.defaultBranch main
5.2 跨平台兼容性配置
# Windows 用户需要设置换行符转换
git config --global core.autocrlf true
# Linux/Mac 用户设置
git config --global core.autocrlf input
# 设置文件权限处理
git config --global core.filemode false
# 启用颜色显示
git config --global color.ui auto
5.3 验证配置
# 查看所有全局配置
git config --global --list
# 查看特定配置项
git config --global user.name
git config --global user.email
6. 仓库克隆与初始化
6.1 克隆指定分支的仓库
# 克隆 dev 分支的 hcu 仓库
git clone -b dev git@175.15.61.142:SwDev_BSW/pfm/hcu.git
# 进入仓库目录
cd hcu
# 查看远程仓库信息
git remote -v
# 查看当前分支状态
git status
# 查看分支列表
git branch -a
6.2 仓库初始化(新项目)
# 初始化新仓库
git init hcu-project
cd hcu-project
# 添加远程仓库地址
git remote add origin git@175.15.61.142:SwDev_BSW/pfm/hcu.git
# 拉取远程分支
git fetch origin
# 切换到开发分支
git checkout -b dev origin/dev
7. 日常开发工作流程
7.1 标准开发流程
# 1. 确保在开发分支
git checkout dev
# 2. 拉取最新代码(避免冲突)
git pull origin dev
# 3. 创建功能分支(基于最新开发分支)
git checkout -b feature/wangxiaoming-new-feature
# 4. 进行代码开发...
# (编辑文件、添加功能等)
# 5. 查看变更状态
git status
# 6. 添加修改文件到暂存区
git add .
# 7. 提交更改(使用规范的提交信息格式)
git commit -m "feat: 添加新功能模块
- 实现用户认证功能
- 添加数据库迁移脚本
- 更新API文档
由 wangxiaoming 开发"
# 8. 推送到远程仓库
git push -u origin feature/wangxiaoming-new-feature
7.2 提交信息规范
类型(范围): 简要描述
详细描述(可选)
- 变更点1
- 变更点2
关联issue: #123
常用类型说明:
- •
feat: 新功能 - •
fix: 修复bug - •
docs: 文档更新 - •
style: 代码格式调整 - •
refactor: 重构代码 - •
test: 测试相关 - •
chore: 构建过程或辅助工具变动
8. 分支管理与协作
8.1 分支操作命令
# 查看本地分支
git branch
# 查看远程分支
git branch -r
# 查看所有分支(本地+远程)
git branch -a
# 创建新分支
git branch feature/wangxiaoming-branch
# 切换分支
git checkout feature/wangxiaoming-branch
# 创建并切换分支
git checkout -b feature/wangxiaoming-new
# 删除本地分支
git branch -d feature/old-branch
# 强制删除分支
git branch -D feature/old-branch
# 删除远程分支
git push origin --delete feature/old-branch
8.2 分支合并与变基
# 合并分支到当前分支
git merge feature/wangxiaoming-feature
# 变基操作(重写提交历史)
git rebase dev
# 交互式变基(合并、修改提交)
git rebase -i HEAD~3
9. 高级操作与故障排除
9.1 SSH 连接问题诊断
# 详细调试模式(显示完整连接过程)
ssh -vvv git@175.15.61.142
# 测试特定端口连接
ssh -p 22 -T git@175.15.61.142
# 检查网络连通性
ping 175.15.61.142
# 检查端口连通性
telnet 175.15.61.142 22
9.2 密钥管理问题
# 启动 SSH 代理
eval "$(ssh-agent -s)"
# 添加密钥到代理
ssh-add ~/.ssh/id_rsa
# 查看已加载的密钥
ssh-add -l
# 删除特定密钥
ssh-add -d ~/.ssh/id_rsa
# 清空所有密钥
ssh-add -D
9.3 Git 操作问题解决
# 重置本地修改(危险操作)
git reset --hard HEAD
# 清理未跟踪文件
git clean -fd
# 查看操作日志
git reflog
# 恢复误删的分支
git checkout -b recovered-branch <commit-hash>
10. 自动化脚本与工具
10.1 自动化部署脚本
#!/bin/bash
# deploy_hcu.sh - HCU项目自动化部署脚本
set -e # 遇到错误立即退出
echo "=== HCU项目部署脚本 ==="
echo "执行用户: wangxiaoming"
echo "开始时间: $(date)"
# 变量定义
PROJECT_DIR="/home/wangxiaoming/projects/hcu"
BRANCH="dev"
REMOTE="origin"
# 进入项目目录
cd "$PROJECT_DIR" || { echo "项目目录不存在"; exit 1; }
# 检查Git状态
echo "1. 检查Git工作状态..."
if ! git status > /dev/null 2>&1; then
echo "错误:不是有效的Git仓库"
exit 1
fi
# 拉取最新代码
echo "2. 拉取最新代码..."
git fetch "$REMOTE"
git checkout "$BRANCH"
git pull "$REMOTE" "$BRANCH"
# 安装依赖(根据项目实际情况调整)
echo "3. 安装项目依赖..."
if [ -f "package.json" ]; then
npm install
elif [ -f "requirements.txt" ]; then
pip install -r requirements.txt
fi
# 运行测试
echo "4. 执行测试套件..."
if [ -f "pytest.ini" ]; then
pytest
elif [ -f "jest.config.js" ]; then
npm test
fi
# 构建项目
echo "5. 构建项目..."
if [ -f "build.gradle" ]; then
./gradlew build
elif [ -f "pom.xml" ]; then
mvn package
fi
echo "=== 部署完成 ==="
echo "完成时间: $(date)"
10.2 日常开发辅助脚本
#!/bin/bash
# daily_dev.sh - 日常开发辅助脚本
# 切换到项目目录
cd /home/wangxiaoming/projects/hcu
# 更新代码库
echo "更新代码库..."
git fetch origin
git pull origin dev
# 创建每日开发分支
BRANCH_NAME="feature/wangxiaoming-$(date +%Y%m%d)"
echo "创建分支: $BRANCH_NAME"
git checkout -b "$BRANCH_NAME"
# 打开开发环境(根据实际环境调整)
# code . # VS Code
# idea . # IntelliJ IDEA
echo "开发环境准备就绪!"
11. 安全最佳实践
11.1 密钥安全管理
- •定期更换密钥:建议每6-12个月更换一次SSH密钥
- •使用强密码:为SSH密钥设置复杂的密码短语
- •限制密钥使用范围:在GitLab中设置密钥的过期时间和访问范围
11.2 访问控制
# 检查当前用户的权限
groups
id wangxiaoming
# 查看仓库权限
git ls-remote --heads origin
11.3 审计与监控
# 查看操作历史
git log --oneline --graph --decorate --all
# 查看特定用户的提交
git log --author="wangxiaoming"
# 查看最近一周的提交
git log --since="1 week ago"
12. 性能优化建议
12.1 Git 配置优化
# 启用文件系统缓存(提高性能)
git config --global core.preloadindex true
git config --global core.fscache true
git config --global gc.auto 256
# 大文件处理(如果项目中有大文件)
git config --global http.postBuffer 2097152000
12.2 SSH 连接优化
# 在SSH配置中添加以下优化参数
Host 175.15.61.142
# 启用压缩(对于慢速网络)
Compression yes
# 连接复用(减少握手次数)
ControlMaster auto
ControlPath ~/.ssh/control:%h:%p:%r
ControlPersist 600
通过以上完整的配置和操作指南,wangxiaoming 可以安全、高效地使用 SSH 协议进行 Git 仓库的日常开发工作。这套方案涵盖了从基础配置到高级优化的各个方面,确保开发流程的顺畅和安全。
954

被折叠的 条评论
为什么被折叠?



