Ssh Batch Manager

WarnAudited by ClawScan on May 18, 2026.

Overview

This skill is purpose-aligned for SSH key management, but it can change access on many servers, stores SSH credentials, and auto-starts a persistent Web UI service with some unsafe defaults.

Install only if you intentionally want this skill to manage SSH access across your servers. Before enabling it, review the server list, use least-privilege accounts where possible, protect the credential JSON and encryption key, require confirmation for both enable and disable operations, and either disable the Web UI service or bind it strictly to localhost.

Findings (6)

Artifact-based informational review of SKILL.md, metadata, install specs, static scan signals, and capability signals. ClawScan does not execute the skill or run runtime probes.

What this means

An agent or user flow could remove SSH access from many servers, potentially locking users out or disrupting administration.

Why it was flagged

The skill explicitly gates enable operations, but also exposes a bulk disable operation that removes keys from all configured servers without an equally explicit confirmation requirement.

Skill content
**Before executing ANY enable operation ... MUST obtain explicit user confirmation** ... `disable-all` | Remove public key from all servers
Recommendation

Require explicit confirmation for every high-impact operation, including disable-all and single-server disable, and show the exact server list before execution.

What this means

A network attacker or misdirected hostname could receive credentials or have keys installed on the wrong host.

Why it was flagged

The SSH automation disables host-key verification while using passwords and key-management commands, which weakens server identity checks.

Skill content
env['SSHPASS'] = password ... '-o', 'StrictHostKeyChecking=no', '-o', 'UserKnownHostsFile=/dev/null'
Recommendation

Do not disable SSH host-key checking by default; pin or verify known hosts and require an explicit user override for first-time or changed host keys.

What this means

Compromise or misuse of the skill, its config file, or its encryption key could grant access to many configured servers.

Why it was flagged

The skill stores and uses SSH server credentials, including examples for root access, even though the registry declares no primary credential or required config path.

Skill content
**Location**: `~/.openclaw/credentials/ssh-batch.json` ... "user": "root" ... "password": "AES256:encrypted_password_here"
Recommendation

Treat this as a privileged SSH credential manager: use least-privilege accounts where possible, tightly restrict file permissions, keep the encryption key separate/protected, and ensure the registry declares the credential/config requirement.

What this means

Users or installers may not realize the skill expects package installation and a privileged setup script that changes the host environment.

Why it was flagged

The skill metadata describes package installation and a post-install script even though the supplied install spec says there is no install spec, creating an install-behavior mismatch.

Skill content
"install": [ ... { "kind": "pip", "package": "cryptography" } ... { "kind": "apt", "package": "sshpass" } ... { "kind": "script", "script": "post-install.sh" } ]
Recommendation

Align the registry install spec with the skill metadata, and make privileged post-install behavior explicit, opt-in, and reviewable.

What this means

A long-running SSH management UI can remain active after installation and increase the local attack surface.

Why it was flagged

The post-install script creates a systemd service, enables it at boot, and starts it immediately, causing the skill's Web UI to persist beyond the current task.

Skill content
sudo tee "$SERVICE_FILE" ... ExecStart=/usr/bin/python3 ${SKILL_DIR}/serve-ui.py ... sudo systemctl enable ${SERVICE_NAME} ... sudo systemctl start ${SERVICE_NAME}
Recommendation

Make auto-start optional, document how to disable/remove the service, and prefer manual start unless the user explicitly opts into persistence.

What this means

If the machine is reachable on the network, other hosts may be able to access the Web UI files and management surface.

Why it was flagged

Binding to an empty host listens on all network interfaces, not just localhost, while the Web UI is presented as a local management interface.

Skill content
with socketserver.TCPServer(("", PORT), Handler) as httpd:
Recommendation

Bind the service to 127.0.0.1 by default, add authentication if it must be network-accessible, and ensure firewall rules block unintended access.