Run shell commands on remote hosts via SSH, and transfer files via SCP. Allowlist-gated.
Scanned 6/14/2026
Install via CLI
openskills install lordmacu/nexo-rs---
name: SSH Exec
description: Run shell commands on remote hosts via SSH, and transfer files via SCP. Allowlist-gated.
requires:
bins:
- ssh
- scp
env:
- SSH_EXEC_ALLOWED_HOSTS
---
# SSH Exec
Execute commands on remote Linux hosts through the system `ssh` client. Uses
key-based auth only (`BatchMode=yes` — no interactive password prompts). Hosts
must be explicitly allowlisted.
## Use when
- "Restart nginx on `prod01`"
- "Tail `/var/log/syslog` on `home-server`"
- Pushing / pulling a file to/from a known host
- Kate driving ops on other machines you administer
## Do not use when
- Persistent interactive sessions — use `tmux-remote`
- Containers on *this* host — use `docker-api`
- Arbitrary / untrusted hosts — allowlist is mandatory
## Tools
- `status` — allowlist + bin versions
- `exec` — `host`, `command`; optional `timeout_secs` (default 30, max 600), `identity_file`
- `scp_upload` — `host`, `local_path`, `remote_path`
- `scp_download` — `host`, `remote_path`, `local_path`
## Env
| Var | Required | Notes |
|-----|----------|-------|
| `SSH_EXEC_ALLOWED_HOSTS` | yes | comma-separated `user@host` or `~/.ssh/config` alias |
| `SSH_EXEC_ALLOW_WRITES` | for `scp_upload` | must be `"true"` |
| `SSH_EXEC_TIMEOUT_SECS` | no | default 30 |
| `SSH_BIN` / `SCP_BIN` | no | override binaries |
## Safety
- Non-allowlisted host → `-32041 host not allowed`
- `StrictHostKeyChecking=accept-new` — first connect auto-adds host key; subsequent changes fail
- `BatchMode=yes` — password-protected keys without agent will fail. Use `ssh-agent` or unencrypted deploy keys
- Writes gated: upload requires `SSH_EXEC_ALLOW_WRITES=true`. Download is read-only, ungated
- `stdout` truncated at 16 KB, `stderr` at 8 KB
No comments yet. Be the first to comment!