最后一班
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user