feat: 仓库接入通用化——批量预检 + 多仓 ssh 别名配给

This commit is contained in:
host committed 2026-10-30 04:18:09 +08:00
1 parent 0787496427
commit 50ba8d9297
3 files changed
+77 -3

No files matched your search

+32 -2
View File
@@ -4,13 +4,20 @@
# 用法(主机上以 root 跑):
# ./provision_codexsvc_key.sh git@github.com:ORG/REPO.git [key-name]
# ./provision_codexsvc_key.sh --check git@github.com:ORG/REPO.git [key-name]
# ./provision_codexsvc_key.sh --list
#
# 流程:
# 1. 在 /home/codexsvc/.ssh/ 生成 ed25519 key(已存在则复用,绝不覆盖);
# 2. 打印公钥(只打印公钥,私钥绝不打印),请把公钥以只读 deploy key
# 加到 GitHub 仓库 Settings -> Deploy keys;
# 3. --check 时以 codexsvc 身份跑 git ls-remote,通了才算配好。
# 4. 另有现成的 key 要复用时,把 key 文件拷到上述目录并 chown
# 3. 在 /home/codexsvc/.ssh/config 里幂等地写一个 Host 别名
# github-<key-name>(HostName github.com、该 key、IdentitiesOnly):
# 多仓各用各的别名,项目 repo_url 写 git@github-<key-name>:ORG/REPO.git
# 形,git 按别名自动选 key,不用在 worker 里拼 GIT_SSH_COMMAND,
# 也不用担心 ssh 试遍全部 key 撞 GitHub 的尝试上限;
# 别名块带 # codexsvc-<key-name> 标记,已存在时不重复写。
# 4. --check 时以 codexsvc 身份跑 git ls-remote,通了才算配好。
# 5. 另有现成的 key 要复用时,把 key 文件拷到上述目录并 chown
# codexsvc、chmod 600,再用 --check 验,不要改本脚本去读 root 的 key。
#
# 安全边界:本脚本不往控制面、环境文件或任何日志里写私钥;公钥
@@ -20,6 +27,11 @@ CHECK=0
if [ "${1:-}" = "--check" ]; then
CHECK=1; shift
fi
if [ "${1:-}" = "--list" ]; then
ls -1 /home/codexsvc/.ssh/id_*.pub 2>/dev/null || true
grep -h "^Host github-" /home/codexsvc/.ssh/config 2>/dev/null || true
exit 0
fi
URL="${1:-}"
NAME="${2:-codex-github}"
if [ -z "$URL" ]; then
@@ -45,6 +57,24 @@ if [ ! -f "$KEY" ]; then
fi
chmod 600 "$KEY" 2>/dev/null || true
chown codexsvc:codexsvc "$KEY" "$KEY.pub" 2>/dev/null || true
CONFIG="$SSH_DIR/config"
touch "$CONFIG"
chown codexsvc:codexsvc "$CONFIG"
chmod 600 "$CONFIG"
if ! grep -q "^# codexsvc-$NAME$" "$CONFIG" 2>/dev/null; then
cat >> "$CONFIG" <<EOF
# codexsvc-$NAME
Host github-$NAME
HostName github.com
User git
IdentityFile $KEY
IdentitiesOnly yes
StrictHostKeyChecking accept-new
EOF
echo "已写 ssh 别名:git@github-$NAME:ORG/REPO.git(项目 repo_url 用此形)"
else
echo "ssh 别名 github-$NAME 已存在,不重复写"
fi
echo "公钥(加到 GitHub 仓库的只读 Deploy keys):"
cat "$KEY.pub"
if [ "$CHECK" = "1" ]; then