From ccdc6350a16df293be38c30e3a8c162441b76aa7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=95=E6=96=B0=E9=9B=A8?= Date: Tue, 3 Feb 2026 01:22:25 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9C=80=E5=90=8E=E4=B8=80=E7=8F=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/server-deploy.yml | 35 ++++++++++++++++++------------ 1 file changed, 21 insertions(+), 14 deletions(-) diff --git a/.gitea/workflows/server-deploy.yml b/.gitea/workflows/server-deploy.yml index b3dfd43..a145c83 100644 --- a/.gitea/workflows/server-deploy.yml +++ b/.gitea/workflows/server-deploy.yml @@ -130,21 +130,28 @@ jobs: # 进一步校验:OpenSSH 私钥中间的 base64 块是否可解码(不输出内容) if grep -q '^-----BEGIN OPENSSH PRIVATE KEY-----$' "${SSH_KEY_PATH}" && grep -q '^-----END OPENSSH PRIVATE KEY-----$' "${SSH_KEY_PATH}"; then - OPENSSH_B64_LEN="$(awk ' - BEGIN{in=0; n=0} - /^-----BEGIN OPENSSH PRIVATE KEY-----$/{in=1; next} - /^-----END OPENSSH PRIVATE KEY-----$/{in=0; exit} - in==1{gsub(/\r/,""); n+=length($0)} - END{print n} - ' "${SSH_KEY_PATH}")" - echo "OpenSSH base64 块字符数(合计):${OPENSSH_B64_LEN}" + # 注意:不要用变量名 in(是 awk 关键字,部分实现会报语法错) + OPENSSH_B64_LEN="$( + awk ' + BEGIN{in_block=0; n=0} + /^-----BEGIN OPENSSH PRIVATE KEY-----$/{in_block=1; next} + /^-----END OPENSSH PRIVATE KEY-----$/{in_block=0; exit} + in_block==1{gsub(/\r/,""); n+=length($0)} + END{print n} + ' "${SSH_KEY_PATH}" 2>/dev/null || true + )" + if [[ -n "${OPENSSH_B64_LEN:-}" ]]; then + echo "OpenSSH base64 块字符数(合计):${OPENSSH_B64_LEN}" + fi + + # 该校验仅用于提示,不应阻断部署流程 if ! awk ' - BEGIN{in=0} - /^-----BEGIN OPENSSH PRIVATE KEY-----$/{in=1; next} - /^-----END OPENSSH PRIVATE KEY-----$/{in=0; exit} - in==1{gsub(/\r/,""); print} - ' "${SSH_KEY_PATH}" | tr -d '\n' | base64 -d >/dev/null 2>&1; then - echo "OpenSSH 私钥的 base64 块无法解码:疑似内容被截断/损坏(即使首尾行还在)。" + BEGIN{in_block=0} + /^-----BEGIN OPENSSH PRIVATE KEY-----$/{in_block=1; next} + /^-----END OPENSSH PRIVATE KEY-----$/{in_block=0; exit} + in_block==1{gsub(/\r/,""); print} + ' "${SSH_KEY_PATH}" 2>/dev/null | tr -d '\n' | base64 -d >/dev/null 2>&1; then + echo "提示:OpenSSH 私钥的 base64 块无法解码(疑似内容被截断/损坏),将继续执行 ssh-keygen 校验定位。" fi fi