Files
nexus/openclaw/knowledgebase/Gitea + SSH 完整配置指南(含排错).md
2026-03-24 11:09:41 +08:00

3.9 KiB
Raw Blame History

Gitea + SSH 完整配置指南(含排错)

#git #gitea #ssh #obsidian

一、整体目标

实现:

  • 使用 Gitea 作为 Git 服务器
  • 使用 SSH Key 替代 username/password
  • 在 Visual Studio Code 中无感使用 Git
  • 避免 HTTP + Proxy 带来的问题

二、Gitea 部署与 SSH 配置

1. Docker 部署(推荐标准配置)

version: "3"

services:
  gitea:
    image: gitea/gitea:latest
    container_name: gitea
    restart: always
    ports:
      - "3000:3000"   # Web UI
      - "2222:22"     # SSH关键
    volumes:
      - ./gitea:/data

2. 为什么要用 2222

  • 宿主机 22 端口通常已被系统 SSH 占用
  • 使用 2222 → 22 映射避免冲突

3. 启用 Gitea SSH 服务

进入容器:

docker exec -it gitea /bin/sh

检查配置:

cat /data/gitea/conf/app.ini

确保:

[server]
START_SSH_SERVER = true
SSH_PORT = 22

4. 重启服务

docker compose down
docker compose up -d

三、客户端 SSH Key 配置

1. 生成 SSH Key

ssh-keygen -t ed25519 -C "ishenwei@gmail.com"

默认路径:

~/.ssh/id_ed25519
~/.ssh/id_ed25519.pub

2. 启动 SSH Agent

eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519

3. 添加公钥到 Gitea

cat ~/.ssh/id_ed25519.pub

复制内容 → 登录 Gitea

  • Settings
  • SSH Keys
  • Add Key

四、SSH 连接测试(关键步骤)

正确命令

ssh -T git@192.168.3.189 -p 2222

返回结果解析

成功

Hi username! You've successfully authenticated...

👉 可以开始使用 Git


Connection refused

connect to host ... port 2222: Connection refused

👉 原因:

  • Docker 没映射端口

✔ 修复:

- "2222:22"

Connection closed

Connection closed by ... port 2222

👉 原因:

  • SSH 服务存在,但不是 Gitea 在处理
  • 或 Gitea SSH 未启用

Permission denied (publickey)

Permission denied (publickey)

👉 原因:

  • SSH key 未加载或未添加

✔ 修复:

ssh-add ~/.ssh/id_ed25519

错误写法(常见坑)

ssh -T git@192.168.3.189:3000   ❌

👉 错误原因:

  • SSH 不支持 IP:PORT 写法

五、Git 仓库改为 SSH

1. 查看当前 remote

git remote -v

你当前是:

http://192.168.3.189:3000/admin/nexus.git   ❌

2. 修改为 SSH

git remote set-url origin ssh://git@192.168.3.189:2222/admin/nexus.git

3. 验证

git pull

4. 查看配置

git config --list

六、VS Code 使用说明

在 Visual Studio Code 中:

  • 无需额外配置
  • 只要 Git + SSH 正常即可

👉 优势:

  • 不再输入密码
  • 不受 proxy 影响
  • clone / pull 不会卡住

七、进阶优化(强烈推荐)

1. SSH Host 别名

编辑:

~/.ssh/config
Host macmini
  HostName 192.168.3.189
  Port 2222
  User git
  IdentityFile ~/.ssh/id_ed25519

2. 使用简化地址

git clone git@macmini:admin/nexus.git

八、你这次问题的根因总结

实际问题链路

HTTP Git + Proxy → 卡住
        ↓
尝试 SSH但用错端口
        ↓
未映射 Docker SSH 端口
        ↓
连接到了错误的 SSH 服务

正确架构

VS Code
   ↓
Git (SSH)
   ↓
Gitea (Docker)
   ↓
SSH Port 2222 → Container 22

九、最佳实践总结

  • 使用 SSH 替代 HTTP + Password
  • Docker 映射 SSH 端口2222
  • 使用 ed25519 key
  • 使用 SSH config 做多环境管理
  • 避免代理干扰 Git

十、一句话结论

👉 Git 的本质是:

  • user.name / email → 标识身份
  • SSH Key → 认证身份

👉 最稳定方案:

Gitea + SSH2222+ VS Code = 无痛开发环境