随机
Enter 搜索 ↑↓ 切换 Esc 清空

github-offline-ssh-repo

命令

GitHub 服务器 SSH 仓库管理

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鉴权

  1. 任意可正常登录GitHub的设备,进入GitHub个人设置
  2. 找到 Developer settings -> Personal access tokens (classic)
  3. 新建Token,仅勾选 repo 全部权限(仅建仓/改仓只需要repo权限,gh工具会额外要求read:org权限,无组织用户可改用curl)
  4. 生成并复制保存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 仓库备注描述

五、执行结果判断

六、本地克隆仓库(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

十、总结

  1. GitHub SSH 仅能推拉已有仓库代码,无法调用API新建远程仓库,新建仓库必须使用Personal Token;
  2. 网页无法登录场景,禁止使用gh交互式SSH登录,改用gh --with-token静默登录或curl API;
  3. FnOS(apt)环境优先apt install gh -y安装CLI工具,改名遇到read:org权限报错直接换curl
  4. 全程无需打开GitHub网页,仅需提前在其他设备生成一次token,即可离线新建、改名、克隆、推送仓库。