fix(deploy): 固定证书同步的香港 SSH Host Key
通过已认证的香港管理连接读取 Ed25519 host 公钥,将 WireGuard 地址 10.77.0.2 的精确键写入宁波 known_hosts,再执行证书同步;不关闭 StrictHostKeyChecking。 验证:远端 host key 格式解析、bash -n、ShellCheck,首次同步因缺少 known_hosts 的现场复现。
This commit is contained in:
@@ -6,6 +6,13 @@ script_dir=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
|
|||||||
source "$script_dir/common.sh"
|
source "$script_dir/common.sh"
|
||||||
load_cluster_env
|
load_cluster_env
|
||||||
|
|
||||||
|
hongkong_host_key=$(cluster_ssh "$CLUSTER_HONGKONG_HOST" \
|
||||||
|
"cut -d ' ' -f 1,2 /etc/ssh/ssh_host_ed25519_key.pub")
|
||||||
|
[[ $hongkong_host_key =~ ^ssh-ed25519\ [A-Za-z0-9+/]+={0,2}$ ]] || {
|
||||||
|
echo 'invalid Hong Kong SSH host key' >&2
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
public_key=$(cluster_ssh "$CLUSTER_NINGBO_HOST" 'bash -s' <<'REMOTE'
|
public_key=$(cluster_ssh "$CLUSTER_NINGBO_HOST" 'bash -s' <<'REMOTE'
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
install -d -m 0700 /root/.ssh
|
install -d -m 0700 /root/.ssh
|
||||||
@@ -28,6 +35,20 @@ chmod 0600 /root/.ssh/authorized_keys
|
|||||||
grep -Fqx "$public_key" /root/.ssh/authorized_keys || printf '%s\n' "$public_key" >>/root/.ssh/authorized_keys
|
grep -Fqx "$public_key" /root/.ssh/authorized_keys || printf '%s\n' "$public_key" >>/root/.ssh/authorized_keys
|
||||||
REMOTE
|
REMOTE
|
||||||
|
|
||||||
|
cluster_ssh "$CLUSTER_NINGBO_HOST" bash -s -- "$hongkong_host_key" <<'REMOTE'
|
||||||
|
set -euo pipefail
|
||||||
|
hongkong_host_key=$1
|
||||||
|
install -d -m 0700 /root/.ssh
|
||||||
|
known_hosts=/root/.ssh/known_hosts
|
||||||
|
temporary=$(mktemp /root/.ssh/known_hosts.XXXXXX)
|
||||||
|
if [[ -f $known_hosts ]]; then
|
||||||
|
grep -Ev '^10\.77\.0\.2([ ,]|$)' "$known_hosts" >"$temporary" || true
|
||||||
|
fi
|
||||||
|
printf '10.77.0.2 %s\n' "$hongkong_host_key" >>"$temporary"
|
||||||
|
chmod 0600 "$temporary"
|
||||||
|
mv "$temporary" "$known_hosts"
|
||||||
|
REMOTE
|
||||||
|
|
||||||
cluster_scp "$script_dir/sync-nginx-certificate.sh" \
|
cluster_scp "$script_dir/sync-nginx-certificate.sh" \
|
||||||
"$CLUSTER_NINGBO_HOST:/usr/local/sbin/easyai-sync-nginx-certificate"
|
"$CLUSTER_NINGBO_HOST:/usr/local/sbin/easyai-sync-nginx-certificate"
|
||||||
cluster_ssh "$CLUSTER_NINGBO_HOST" 'bash -s' <<'REMOTE'
|
cluster_ssh "$CLUSTER_NINGBO_HOST" 'bash -s' <<'REMOTE'
|
||||||
|
|||||||
Reference in New Issue
Block a user