tsys-siem verified SSHOK + SUDOOK via access-matrix probe. With this landing, 69/70 non-excluded systems are at intended access state; the sole remaining gap (stlp-3dscanner) is deferred to [#417]. Strip the now-empty active-target section from bootstrap-all.sh. 💘 Generated with Crush Assisted-by: Crush:glm-5.2
66 lines
2.8 KiB
Bash
66 lines
2.8 KiB
Bash
#!/usr/bin/bash
|
|
# bootstrap-all.sh — push agent SSH key + passwordless sudo to remaining systems.
|
|
#
|
|
# SSH is the ONLY approved access channel (see AGENTS.md "Access-channel
|
|
# policy: SSH only"). This script reaches systems that still allow password
|
|
# auth over sshd. Systems that reject password auth (publickey-only) cannot
|
|
# be reached this way — see the CONSOLE-ONLY section printed at the end.
|
|
#
|
|
# Two escalation methods:
|
|
# sudo → Ubuntu-style systems (no root pw; localuser has sudo)
|
|
# su → Debian-style systems (root has a password)
|
|
#
|
|
# Passes AGENT_USER so agent-bootstrap.sh targets the correct unprivileged
|
|
# user. You enter passwords interactively. Idempotent: safe to re-run.
|
|
#
|
|
# Verified state (access-matrix.sh, 2026-08-10): 68/70 non-excluded systems
|
|
# at intended access state. Only tsys-siem remains below.
|
|
set -u
|
|
cd "$(dirname "$0")" || exit 1
|
|
|
|
SCRIPT=agent-bootstrap.sh
|
|
SSH_OPTS=(-o StrictHostKeyChecking=accept-new -o ConnectTimeout=10)
|
|
|
|
run_with_sudo() {
|
|
local name="$1" ip="$2" user="$3" agent_user="${4:-localuser}"
|
|
echo "========================================"
|
|
echo " $name ($ip) — $user (sudo, agent=${agent_user})"
|
|
echo "========================================"
|
|
scp "${SSH_OPTS[@]}" "$SCRIPT" "${user}@${ip}:/tmp/" \
|
|
&& ssh -t "${SSH_OPTS[@]}" "${user}@${ip}" "sudo AGENT_USER=${agent_user} bash /tmp/$SCRIPT" \
|
|
&& echo " -> $name DONE" \
|
|
|| echo " -> $name FAILED"
|
|
echo
|
|
}
|
|
|
|
run_with_su() {
|
|
local name="$1" ip="$2" user="$3" agent_user="${4:-localuser}"
|
|
echo "========================================"
|
|
echo " $name ($ip) — $user (su, agent=${agent_user})"
|
|
echo "========================================"
|
|
scp "${SSH_OPTS[@]}" "$SCRIPT" "${user}@${ip}:/tmp/" \
|
|
&& ssh -t "${SSH_OPTS[@]}" "${user}@${ip}" "su -c 'AGENT_USER=${agent_user} bash /tmp/$SCRIPT'" \
|
|
&& echo " -> $name DONE" \
|
|
|| echo " -> $name FAILED"
|
|
echo
|
|
}
|
|
|
|
# All password-auth-reachable systems have been bootstrapped.
|
|
# Verified state (access-matrix.sh, 2026-08-10): 69/70 non-excluded systems
|
|
# at intended access state. The only remaining NOKEY (stlp-3dscanner) is
|
|
# deferred to [#417] and requires a rename + bring-online first — out of
|
|
# scope here. Run `access-matrix.sh` to re-verify at any time.
|
|
echo "All password-auth-reachable systems are bootstrapped."
|
|
echo "Remaining gap: stlp-3dscanner (deferred to [#417])."
|
|
echo "Run access-matrix.sh to re-verify."
|
|
echo "Deferred (separate ticket):"
|
|
echo " stlp-3dscanner — rename + bring online first [#417]"
|
|
echo "========================================"
|
|
echo "By design (leave alone):"
|
|
echo " sectestbed-sandbox — 2FA enforced"
|
|
echo "========================================"
|
|
echo "Excluded by policy (no SSH access):"
|
|
echo " pfv-bms (API), tsys-cloudron (prod revenue),"
|
|
echo " tsys-ucs-01/02 (API-managed), tsys-umbrel (treasury)"
|
|
echo "========================================"
|