This commit is contained in:
parent
79a5875758
commit
6573ba8c9f
@ -38,23 +38,44 @@ jobs:
|
||||
env:
|
||||
SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
|
||||
run: |
|
||||
# 关闭 -e,先打印诊断信息,避免任何一步失败导致后续诊断也丢
|
||||
set +e
|
||||
mkdir -p ~/.ssh
|
||||
# 写入并去除可能被 secret 引入的 CR,避免 openssh 解析失败
|
||||
|
||||
echo "===== 诊断 1:secret 是否非空 ====="
|
||||
# 只打印字节长度,绝对不会泄漏内容
|
||||
BYTES=$(printf '%s' "${SSH_PRIVATE_KEY}" | wc -c)
|
||||
echo "SSH_PRIVATE_KEY 字节数: ${BYTES}"
|
||||
if [ "${BYTES}" -lt 100 ]; then
|
||||
echo "❌ secret 内容小于 100 字节,几乎肯定没配置或名字对不上"
|
||||
echo "请到 Gitea 仓库 → Settings → Actions → Secrets 确认存在名为 SSH_PRIVATE_KEY 的 secret"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "===== 诊断 2:写入文件并去 CR ====="
|
||||
printf '%s\n' "${SSH_PRIVATE_KEY}" | tr -d '\r' > ~/.ssh/deploy_key
|
||||
chmod 600 ~/.ssh/deploy_key
|
||||
ssh-keyscan -H "${DEPLOY_HOST}" >> ~/.ssh/known_hosts 2>/dev/null
|
||||
# 诊断:不打印私钥内容,只打印结构,便于定位 secret 是否损坏
|
||||
echo "---私钥文件行数与首末行(不含中间敏感内容)---"
|
||||
wc -l ~/.ssh/deploy_key
|
||||
head -n 1 ~/.ssh/deploy_key
|
||||
tail -n 1 ~/.ssh/deploy_key
|
||||
# 通过 ssh-keygen 校验私钥合法性并派生公钥指纹
|
||||
echo "文件字节数: $(wc -c < ~/.ssh/deploy_key)"
|
||||
echo "文件行数: $(wc -l < ~/.ssh/deploy_key)"
|
||||
echo "首行: $(head -n 1 ~/.ssh/deploy_key)"
|
||||
echo "末行: $(tail -n 1 ~/.ssh/deploy_key)"
|
||||
|
||||
echo "===== 诊断 3:ssh-keygen 校验私钥 ====="
|
||||
ssh-keygen -y -f ~/.ssh/deploy_key > ~/.ssh/deploy_key.pub
|
||||
echo "---派生公钥指纹(把公钥追加到部署机 authorized_keys)---"
|
||||
KEYGEN_EXIT=$?
|
||||
if [ ${KEYGEN_EXIT} -ne 0 ]; then
|
||||
echo "❌ ssh-keygen 校验失败(exit=${KEYGEN_EXIT}),私钥格式坏了"
|
||||
exit 1
|
||||
fi
|
||||
echo "公钥指纹:"
|
||||
ssh-keygen -l -f ~/.ssh/deploy_key.pub
|
||||
echo "---派生公钥内容(可直接 append 到部署机 ~/.ssh/authorized_keys)---"
|
||||
echo "公钥内容(把这一行追加到部署机 ~/.ssh/authorized_keys):"
|
||||
cat ~/.ssh/deploy_key.pub
|
||||
|
||||
echo "===== 诊断 4:known_hosts ====="
|
||||
ssh-keyscan -H "${DEPLOY_HOST}" >> ~/.ssh/known_hosts 2>&1
|
||||
echo "known_hosts 行数: $(wc -l < ~/.ssh/known_hosts)"
|
||||
|
||||
- name: 上传 start.sh 到部署目录
|
||||
run: |
|
||||
# 强制仅用密钥认证 + 详细日志,password 认证禁用后仍失败会直接抛错
|
||||
|
||||
Loading…
Reference in New Issue
Block a user