github-offline-ssh-repo
GitHub 服务器 SSH 仓库管理
前言
日常使用中常遇到 GitHub网页打不开/无法登录,但SSH连接验证正常 的问题。
普通git命令仅能推拉代码,无法创建远程仓库,GitHub CLI交互式登录会卡死网页授权,本文提供两套方案:gh CLI Token静默登录方案 + Curl API创建方案,适配FnOS(apt包管理器)、Root用户、SSH鉴权正常环境。
一、环境前置操作
1. 安装GitHub CLI(gh)
FnOS为apt系系统,先安装gh工具:
apt update
apt install gh -y
2. 验证SSH连通性
终端执行以下命令,确认SSH密钥配置正常:
ssh -T git@github.com
✅ 成功输出(代表SSH可正常使用):
Hi meimolihan! You've successfully authenticated, but GitHub does not provide shell access.
说明:SSH权限仅用于git代码拉取推送,不能调用GitHub API创建仓库,创建仓库必须依赖Personal Token鉴权。
二、前期准备:获取GitHub个人Classic Token
核心:SSH仅用于代码推拉,创建仓库需要API权限,必须使用Token鉴权
- 任意可正常登录GitHub的设备,进入GitHub个人设置
- 找到
Developer settings -> Personal access tokens (classic) - 新建Token,仅勾选 repo 全部权限(仅建仓/改仓只需要repo权限,gh工具会额外要求read:org权限,无组织用户可改用curl)
-
生成并复制保存Token(仅显示一次,丢失需重新生成)
示例:
你的GitHub个人Token
三、方案一:gh CLI静默Token登录(推荐,后续可通过gh命令管理仓库)
避坑:不使用交互式
gh auth login -p ssh(会弹窗要求浏览器/上传密钥,网页打不开卡死),改用Token静默登录。 注意:若提示missing required scope 'read:org',代表token缺少组织权限,放弃gh改名,改用下方curl API方式。
1. gh使用token非交互式登录
# 清空旧登录信息
gh auth logout
# 使用token直接登录,替换为自己的token
gh auth login --with-token <<< 你的GitHub个人Token
2. gh命令创建CmdBox仓库
# 创建公开仓库
gh repo create CmdBox --public --add-readme --description "CmdBox 工具箱项目仓库"
# 需要私有仓库替换命令
# gh repo create CmdBox --private --add-readme --description "CmdBox 工具箱项目仓库"
四、方案二:Curl API一键创建远程仓库(无依赖gh也可使用)
无需网页、无需GUI、纯命令行,直接调用GitHub官方API创建仓库。
1. 创建公开仓库
将命令中你的TOKEN替换为真实token:
curl -X POST \
-H "Authorization: token 你的GitHub个人Token" \
-H "Content-Type: application/json" \
https://api.github.com/user/repos \
-d '{"name":"CmdBox","private":false,"auto_init":true,"description":"CmdBox 工具箱项目仓库"}'
2. 创建私有仓库
curl -X POST \
-H "Authorization: token 你的GitHub个人Token" \
-H "Content-Type: application/json" \
https://api.github.com/user/repos \
-d '{"name":"CmdBox","private":true,"auto_init":true,"description":"CmdBox 工具箱项目仓库"}'
| 参数 | 作用 |
|---|---|
| name | 仓库名称(固定为 CmdBox) |
| private:false | 公开仓库 |
| private:true | 私有仓库 |
| auto_init:true | 自动初始化 README.md 文件 |
| description | 仓库备注描述 |
五、执行结果判断
- ✅ 返回 201 Created + 一大串JSON数据:仓库创建成功
- ❌ 401 Unauthorized:Token错误/过期/未勾选repo权限
- ❌ 422 Unprocessable Entity:CmdBox 同名仓库已存在
六、本地克隆仓库(SSH方式)
仓库云端创建成功后,直接通过SSH协议克隆到本地,全程无密码:
# 克隆仓库
git clone git@github.com:meimolihan/CmdBox.git
# 进入仓库目录
cd CmdBox
七、常规代码推送测试
# 新建测试文件
echo "Hello CmdBox" > test.txt
# 提交代码
git add .
git commit -m "first commit: add test file"
# 推送至远程main分支
git push origin main
八、仓库重命名教程(CmdBox → cmdbox,重点)
gh工具需要额外
read:org权限,无组织账号优先使用curl API修改云端仓库名,仅需repo权限。
8.1 API云端修改仓库名称
curl -X PATCH \
-H "Authorization: token 你的GitHub个人Token" \
-H "Content-Type: application/json" \
https://api.github.com/repos/meimolihan/CmdBox \
-d '{"name":"cmdbox"}'
返回200状态码即云端改名成功。
8.2 修改本地git远程配置
进入项目目录,更新origin远程地址:
git remote set-url origin git@github.com:meimolihan/cmdbox.git
# 查看是否修改成功
git remote -v
8.3(可选)本地文件夹同步改名
cd ../
mv CmdBox cmdbox
cd cmdbox
8.4 查看当前仓库名称方法
# 1.本地查看远程绑定名称
git remote -v
# 2.API查看云端仓库信息
curl -H "Authorization: token 你的TOKEN" https://api.github.com/repos/meimolihan/cmdbox
接口返回JSON内"name":"cmdbox"为云端正式仓库名。
九、收尾清理(可选)
# 如需退出gh登录
gh auth logout
十、总结
- GitHub SSH 仅能推拉已有仓库代码,无法调用API新建远程仓库,新建仓库必须使用Personal Token;
- 网页无法登录场景,禁止使用gh交互式SSH登录,改用
gh --with-token静默登录或curl API; - FnOS(apt)环境优先
apt install gh -y安装CLI工具,改名遇到read:org权限报错直接换curl; - 全程无需打开GitHub网页,仅需提前在其他设备生成一次token,即可离线新建、改名、克隆、推送仓库。