fix: gracefully handle standalone node cleanup limitation
- Cleanup script now detects forced command restriction on standalone nodes - Logs helpful message explaining limitation (security by design) - Does not fail when standalone nodes cannot be cleaned up - Documents that standalone node cleanup is limited by forced command security - Automatic cleanup works fully for cluster nodes - Manual cleanup command provided for standalone nodes if needed
This commit is contained in:
parent
c9bbb5e6fb
commit
02701ca22b
3 changed files with 40 additions and 13 deletions
|
|
@ -562,7 +562,22 @@ Starting in v4.26.0, SSH keys are **automatically removed** when you delete a no
|
|||
- Removes the SSH key entries (`# pulse-managed-key` and `# pulse-proxy-key`)
|
||||
- Logs the cleanup action via syslog
|
||||
|
||||
This works for both **cluster nodes** and **standalone nodes** (added via turnkey setup).
|
||||
**Automatic cleanup works for:**
|
||||
- ✅ **Cluster nodes** - Full automatic cleanup (Proxmox clusters have unrestricted passwordless SSH)
|
||||
- ⚠️ **Standalone nodes** - Cannot auto-cleanup due to forced command security (see below)
|
||||
|
||||
**Standalone Node Limitation:**
|
||||
|
||||
Standalone nodes use forced commands (`command="sensors -j"`) for security. This same restriction prevents the cleanup script from running `sed` to remove keys. This is a **security feature, not a bug** - adding a workaround would defeat the forced command protection.
|
||||
|
||||
For standalone nodes:
|
||||
- Keys remain after removal (but they're **read-only** - only `sensors -j` access)
|
||||
- **Low security risk** - no shell access, no write access, no port forwarding
|
||||
- **Auto-cleanup on re-add** - Setup script removes old keys when node is re-added
|
||||
- **Manual cleanup if needed:**
|
||||
```bash
|
||||
ssh root@standalone-node "sed -i '/# pulse-proxy-key$/d' /root/.ssh/authorized_keys"
|
||||
```
|
||||
|
||||
**Monitoring Cleanup:**
|
||||
```bash
|
||||
|
|
|
|||
|
|
@ -428,15 +428,21 @@ else
|
|||
fi
|
||||
|
||||
# Remove both pulse-managed-key and pulse-proxy-key entries from remote host
|
||||
$SSH_CMD root@"$HOST_CLEAN" \
|
||||
"sed -i -e '/# pulse-managed-key\$/d' -e '/# pulse-proxy-key\$/d' /root/.ssh/authorized_keys" 2>&1 | \
|
||||
logger -t "$LOG_TAG" -p user.info
|
||||
CLEANUP_OUTPUT=$($SSH_CMD root@"$HOST_CLEAN" \
|
||||
"sed -i -e '/# pulse-managed-key\$/d' -e '/# pulse-proxy-key\$/d' /root/.ssh/authorized_keys && echo 'SUCCESS'" 2>&1)
|
||||
|
||||
if [[ $? -eq 0 ]]; then
|
||||
if echo "$CLEANUP_OUTPUT" | grep -q "SUCCESS"; then
|
||||
log_info "Successfully cleaned up SSH keys on $HOST_CLEAN"
|
||||
else
|
||||
log_error "Failed to clean up SSH keys on $HOST_CLEAN"
|
||||
exit 1
|
||||
# Check if this is a standalone node with forced commands (common case)
|
||||
if echo "$CLEANUP_OUTPUT" | grep -q "cpu_thermal\|coretemp\|k10temp"; then
|
||||
log_warn "Cannot cleanup standalone node $HOST_CLEAN (forced command prevents cleanup)"
|
||||
log_info "Standalone node keys are read-only (sensors -j) - low security risk"
|
||||
log_info "Manual cleanup: ssh root@$HOST_CLEAN \"sed -i '/# pulse-proxy-key\$/d' /root/.ssh/authorized_keys\""
|
||||
else
|
||||
log_error "Failed to clean up SSH keys on $HOST_CLEAN: $CLEANUP_OUTPUT"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
|
|
|||
|
|
@ -115,15 +115,21 @@ else
|
|||
fi
|
||||
|
||||
# Remove both pulse-managed-key and pulse-proxy-key entries from remote host
|
||||
$SSH_CMD root@"$HOST_CLEAN" \
|
||||
"sed -i -e '/# pulse-managed-key\$/d' -e '/# pulse-proxy-key\$/d' /root/.ssh/authorized_keys" 2>&1 | \
|
||||
logger -t "$LOG_TAG" -p user.info
|
||||
CLEANUP_OUTPUT=$($SSH_CMD root@"$HOST_CLEAN" \
|
||||
"sed -i -e '/# pulse-managed-key\$/d' -e '/# pulse-proxy-key\$/d' /root/.ssh/authorized_keys && echo 'SUCCESS'" 2>&1)
|
||||
|
||||
if [[ $? -eq 0 ]]; then
|
||||
if echo "$CLEANUP_OUTPUT" | grep -q "SUCCESS"; then
|
||||
log_info "Successfully cleaned up SSH keys on $HOST_CLEAN"
|
||||
else
|
||||
log_error "Failed to clean up SSH keys on $HOST_CLEAN"
|
||||
exit 1
|
||||
# Check if this is a standalone node with forced commands (common case)
|
||||
if echo "$CLEANUP_OUTPUT" | grep -q "cpu_thermal\|coretemp\|k10temp"; then
|
||||
log_warn "Cannot cleanup standalone node $HOST_CLEAN (forced command prevents cleanup)"
|
||||
log_info "Standalone node keys are read-only (sensors -j) - low security risk"
|
||||
log_info "Manual cleanup: ssh root@$HOST_CLEAN \"sed -i '/# pulse-proxy-key\$/d' /root/.ssh/authorized_keys\""
|
||||
else
|
||||
log_error "Failed to clean up SSH keys on $HOST_CLEAN: $CLEANUP_OUTPUT"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
|
|
|||
Loading…
Reference in a new issue