目录
[成员添加公钥到自己的 GitLab 账户](#成员添加公钥到自己的 GitLab 账户)
[GitLab 中的权限级别](#GitLab 中的权限级别)
[测试 SSH 连接](#测试 SSH 连接)
[检查 Git 配置](#检查 Git 配置)
[SSH Key 使用规则:](#SSH Key 使用规则:)
[HTTPS+ Personal Access Token](#HTTPS+ Personal Access Token)
[方案B:使用 HTTPS + Personal Access Token(推荐)](#方案B:使用 HTTPS + Personal Access Token(推荐))
[四、使用 Personal Access Token 的完整流程](#四、使用 Personal Access Token 的完整流程)
[1. 生成 Token](#1. 生成 Token)
[2. 克隆仓库](#2. 克隆仓库)
[3. 设置自动认证](#3. 设置自动认证)
[六、如果坚持使用 SSH 密钥认证](#六、如果坚持使用 SSH 密钥认证)
[1. 验证您的密钥是否有效](#1. 验证您的密钥是否有效)
[2. 检查 GitLab 是否接受您的密钥](#2. 检查 GitLab 是否接受您的密钥)
[3. 使用标准长度的密钥](#3. 使用标准长度的密钥)
[问题:Token 认证失败](#问题:Token 认证失败)
SSH方式
在本地git命令行执行:ssh-keygen -t ed25519 -C "your_email@example.com" -f /root/.ssh/id_ed25519
其中ed25519是密钥文件名字 "your_email@example.com" 是一个提示可以任意填写
-f后面的 /root/.ssh/id_ed25519 是保存的位置
这条命令会生成2个文件。后缀有pub的要粘贴到放在git服务端的SSH key里 作为公钥

没有这个后缀的是私钥保存在本地,使用git的时候会携带私钥发送到git服务端。服务端根据私钥用公钥进行身份认证。弱国本地删除了私钥就会认证失败无法使用git。
成员添加公钥到自己的 GitLab 账户
-
登录 GitLab
-
点击头像 → Edit profile
-
左侧 SSH Keys
-
粘贴公钥:
cat ~/.ssh/id_ed25519.pub -
添加描述,点击 Add key
在 GitLab 网页操作:
项目 → Settings → Members
添加成员,设置权限级别:
- Maintainer: 管理权限
- Developer: 开发权限(可以推送)
- Reporter: 只读权限
具体使用场景
场景1:新成员第一次拉取代码
# 1. 克隆仓库
git clone git@192.168.1.1:admin/xiangmu342.git
# 2. 进入项目目录
cd xiangmu342
# 3. 配置用户信息(重要!)
git config user.name "张三"
git config user.email "zhangsan@company.com"
# 4. 查看项目状态
git status
场景2:提交代码
# 拉取远程最新代码
git pull origin main
# 或分步操作
git fetch origin
git merge origin/main
场景3:提交代码到仓库
# 1. 修改文件后添加到暂存区
git add .
# 2. 提交更改
git commit -m "描述本次修改的内容"
# 3. 推送到远程仓库
git push origin main
查看自己的权限
# 在仓库目录中查看远程信息
git remote show origin
四、权限管理和访问控制
GitLab 中的权限级别

五、团队协作最佳实践
分支策略示例
# 1. 主分支保护
git checkout main
git pull origin main
# 2. 创建功能分支
git checkout -b feature/新功能名称
# 3. 开发完成后提交
git add .
git commit -m "完成新功能开发"
# 4. 推送到远程
git push origin feature/新功能名称
# 5. 在 GitLab 创建 Merge Request
避免冲突的工作流程
# 每天开始工作前
git checkout main
git pull origin main
# 创建新分支
git checkout -b feature/当天工作内容
# 工作完成后
git add .
git commit -m "完成工作内容"
git push origin feature/当天工作内容
六、问题排查和调试
测试 SSH 连接
# 测试到 GitLab 的连接
ssh -T git@192.168.60.36
# 如果失败,检查密钥
ssh -vT git@192.168.60.36 # 详细模式
检查 Git 配置
# 查看当前用户配置
git config --list
# 查看仓库特定配置
git config --local --list
解决权限被拒绝问题
# 如果出现 Permission denied
# 1. 检查 SSH 密钥是否正确添加
# 2. 检查项目成员权限
# 3. 检查分支保护规则
七、为团队成员提供的一键设置脚本
创建 team_setup_guide.sh:
#!/bin/bash
echo "=== GitLab 团队成员设置指南 ==="
# 检查当前用户
CURRENT_USER=$(whoami)
echo "当前用户: $CURRENT_USER"
# 生成 SSH 密钥
echo "1. 生成 SSH 密钥..."
ssh-keygen -t ed25519 -C "${CURRENT_USER}@gitlab" -f ~/.ssh/id_ed25519 -N ""
# 设置权限
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_ed25519
chmod 644 ~/.ssh/id_ed25519.pub
# 显示公钥
echo -e "\n2. 请将以下公钥添加到 GitLab:"
echo "======================================"
cat ~/.ssh/id_ed25519.pub
echo "======================================"
echo -e "\n3. 添加步骤:"
echo " - 登录 GitLab: https://192.168.60.36"
echo " - 点击头像 → Edit profile → SSH Keys"
echo " - 粘贴上面的公钥内容"
echo " - 点击 Add key"
echo -e "\n4. 测试连接:"
ssh -T git@192.168.60.36
echo -e "\n5. 克隆仓库命令:"
echo " git clone git@192.168.60.36:Administrator/bztongyong.git"
echo -e "\n6. 配置用户信息:"
echo " git config user.name \"您的姓名\""
echo " git config user.email \"您的邮箱@company.com\""
八、管理员操作指南
添加团队成员到项目
# 在 GitLab 网页操作:
# 1. 进入项目 → Settings → Members
# 2. 输入用户名或邮箱
# 3. 选择权限级别
# 4. 点击 Add to project
设置分支保护规则
# 项目 → Settings → Repository → Protected Branches
# 保护 main 分支,只允许 Maintainer 推送
九、总结
SSH Key 使用规则:
-
✅ 每个用户一个密钥对,不是每个仓库
-
✅ 一个密钥可以访问所有有权限的仓库
-
✅ 管理员控制每个成员对每个仓库的访问权限
团队成员工作流程:
-
生成自己的 SSH 密钥对
-
将公钥添加到自己的 GitLab 账户
-
等待管理员将自己添加到项目成员
-
克隆仓库:
git clone git@地址/项目.git -
配置用户信息:
git config user.name "姓名" -
日常开发:拉取 → 修改 → 提交 → 推送
管理员工作流程:
-
创建项目
-
添加团队成员并设置权限
-
配置分支保护规则
-
管理 Merge Request
这样,团队中的每个成员都可以使用自己的 SSH Key 安全地拉取和提交代码


HTTPS+ Personal Access Token
方案B:使用 HTTPS + Personal Access Token(推荐)
步骤1:生成 Personal Access Token
-
登录 GitLab → 点击头像 → Edit profile
-
左侧菜单选择 Access Tokens
-
填写信息:
Token name: Git CLI Access Expiration date: 可选 Scopes: ✅ 勾选 api 和 read_repository -
点击 Create personal access token
-
复制生成的令牌(只显示一次!)
步骤2:使用 Token 克隆
# 克隆仓库
git clone https://192.168.60.36/Administrator/bztongyong.git
# 认证信息:
Username: 可以填任意值,比如 git
Password: 粘贴您的 Token(如 glpat-xxxxxxxxxxxxxxxxxx)
步骤3:配置凭证存储(避免重复输入)
# 缓存凭证(15分钟)
git config --global credential.helper cache
# 永久存储凭证(保存到文件)
git config --global credential.helper store
# 或使用内存缓存
git config --global credential.helper 'cache --timeout=3600'
三、不同认证方式对比
| 认证方式 | 安全性 | 便利性 | 配置复杂度 | 推荐度 |
|---|---|---|---|---|
| SSH 密钥 | 高 | 高(配置后免密) | 中等 | ⭐⭐⭐⭐⭐ |
| HTTPS + Token | 高 | 中(需管理Token) | 简单 | ⭐⭐⭐⭐ |
| HTTPS + 密码 | 低(已弃用) | 低 | 简单 | ❌ 不推荐 |
四、使用 Personal Access Token 的完整流程
1. 生成 Token
在 GitLab 中:
Settings → Access Tokens → 创建 Token
权限:api, read_repository, write_repository
2. 克隆仓库
git clone https://192.168.60.36/Administrator/bztongyong.git
# 用户名:git
# 密码:glpat-xxxxxxxxxxxxxxxxxx
3. 设置自动认证
# 方法1:在 URL 中嵌入 Token
git clone https://gitlab-ci-token:glpat-xxxxxxxxxxxxxxxxxx@192.168.60.36/Administrator/bztongyong.git
# 方法2:使用凭证助手
git config --global credential.helper store
# 第一次输入后会自动保存
五、一键配置脚本
创建 setup_https_auth.sh:
#!/bin/bash
echo "=== 配置 Git HTTPS 认证 ==="
# 1. 修改远程地址为 HTTPS
if [ -d ".git" ]; then
echo "当前仓库已存在,修改远程地址为 HTTPS..."
git remote set-url origin https://192.168.60.36/Administrator/bztongyong.git
else
echo "使用 HTTPS 克隆仓库..."
git clone https://192.168.60.36/Administrator/bztongyong.git
cd bztongyong
fi
# 2. 配置凭证存储
echo "配置凭证存储(缓存1小时)..."
git config --global credential.helper 'cache --timeout=3600'
# 3. 显示配置信息
echo -e "\n=== 配置完成 ==="
echo "远程地址:"
git remote -v
echo -e "\n=== 使用说明 ==="
echo "1. 第一次操作时会提示输入用户名和密码"
echo "2. 用户名:git 或 Administrator"
echo "3. 密码:使用 Personal Access Token(不是登录密码)"
echo "4. Token 生成位置:GitLab → Settings → Access Tokens"
echo "5. 需要勾选权限:api, read_repository"
echo -e "\n=== 获取 Token 的步骤 ==="
echo "1. 登录 GitLab (https://192.168.60.36)"
echo "2. 点击右上角头像 → Edit profile"
echo "3. 左侧菜单选择 Access Tokens"
echo "4. 创建 Token,勾选所需权限"
echo "5. 复制生成的 Token(只显示一次!)"
echo -e "\n=== 测试连接 ==="
read -p "是否现在测试拉取?(y/n): " test_pull
if [[ $test_pull =~ ^[Yy]$ ]]; then
git pull origin main
fi
六、如果坚持使用 SSH 密钥认证
如果您想继续用 SSH 但遇到问题,可以尝试:
1. 验证您的密钥是否有效
# 测试密钥连接
ssh -vT git@192.168.60.36 2>&1 | grep -i "authenticat"
2. 检查 GitLab 是否接受您的密钥
# 查看公钥指纹
ssh-keygen -lf /root/.ssh/id_rsa.pub
# 确保指纹与 GitLab 中显示的一致
3. 使用标准长度的密钥
# 生成标准的 RSA 2048 密钥
rm -f /root/.ssh/id_rsa*
ssh-keygen -t rsa -b 2048 -C "git@192.168.60.36"
七、推荐的解决方案
对于生产环境部署:
# 使用 Personal Access Token 最稳定
git clone https://gitlab-ci-token:${GITLAB_TOKEN}@192.168.60.36/项目.git
# 设置环境变量
export GITLAB_TOKEN=glpat-xxxxxxxxxxxxxxxxxx
对于个人开发:
# 使用 SSH 密钥更方便
ssh-keygen -t ed25519 -C "your-email@example.com"
# 添加公钥到 GitLab
八、故障排除
问题:Token 认证失败
# 检查 Token 权限是否足够
# 需要至少 read_repository 权限
# 检查 Token 是否过期
# 重新生成 Token
问题:凭证不被保存
# 清除旧凭证
git credential reject
protocol=https
host=192.168.60.36
[按 Ctrl+D 结束]
# 重新配置
git config --global credential.helper store
九、总结
"其他验证登录方式"主要指:
-
✅ HTTPS + Personal Access Token(推荐替代方案)
-
在 GitLab 生成 Token
-
克隆时使用 HTTPS 地址
-
用户名填
git,密码填 Token
-
-
❌ HTTPS + 密码(已弃用,不推荐)
-
🔧 修正 SSH 密钥问题
-
确保使用标准密钥长度(2048/4096)
-
或使用 ED25519 密钥
-
最简单的操作步骤:
# 1. 在 GitLab 生成 Personal Access Token
# 2. 使用 HTTPS 克隆
git clone https://192.168.60.36/Administrator/bztongyong.git
# 3. 用户名:git
# 4. 密码:粘贴 Token
# 5. 配置凭证缓存
git config --global credential.helper cache