ssh-incident-response
Diagnose and recover an unresponsive SSH host
Skill by Nightreaver
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/nightreaver-ssh-incident-response
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/ssh-incident-response
What's inside
- Skill name
ssh-incident-response- Description
- Diagnose and recover an unresponsive SSH host
- License
- GPL-3.0
- Instructions
- 116 lines in SKILL.md · view on GitHub
Agent Skills spec issues
- name: missing
Files (1)
- SKILL.md
SKILL.md (first lines)
# SSH Incident Response When a host goes dark or behaves erratically, follow this sequence. Read-only tier throughout -- surfacing a problem is the job; fixing it is a different runbook with a different tier. Separate from [ssh-host-healthcheck](../ssh-host-healthcheck/SKILL.md): that runbook starts from "tell me the state of this host"; this one starts from "the host is unresponsive / weird, what's going on". If healthcheck comes back red, this runbook is the next step. ## Sequence 1. Confirm reachability 2. Verify host identity 3. Collect baseline metrics 4. Targeted triage + handoff ## 1. Confirm reachability ```python ssh_host_ping(host="web01") ``` Read the result: - `reachable=false` -> TCP is down. Check network / firewall / cloud console out-of-band before continuing. Nothing in this runbook helps you if the box isn't on the network. - `reachable=true, auth_ok=false, error="UnknownHost: ..."` -> host key changed. **Do not re-trust from the LLM.** Escalate to a human operator -- a key mismatch could be legitimate (host rebuilt) or hostile (MITM); the LLM can't distinguish them. - `reachable=true, auth_ok=true` -> host is reachable. Proceed to Section 2. ## 2. Verify host identity ```python ssh_known_hosts_verify(host="web01") ``` `matches_known_hosts=true` means the live key equals the pinned fingerprint. Anything else is a security event -- stop and escalate with the audit-log correlation ID. ## 3. Collect baseline In parallel: ```python ssh_host_info(host="web01") # uname, os_release, uptime ssh_host_disk_usage(host="web01") # mount table + use_percent ssh_host_processes(host="web01") # top CPU / memory consumers ssh_host_alerts(host="web01") # threshold breaches ``` Why each one: - `ssh_host_info` -- uptime is the silent reframer. A box up 4 minutes with high load is probably startup churn; up 400 days with the same numbers is saturation. - `ssh_host_disk_usage` -- full partitions are the single most common cause of "silent" failures (logging stops, services refuse to start, package installs hang). - `ssh_host_processes` -- runaway / zombie processes, or a workload that should not be there. - `ssh_host_alerts` -- whether the host has already crossed an operator-declared threshold. Empty `breaches` is not the same as "healthy"; it just means "within configured limits" (and the limits may not be configured -- see [ssh-host-healthcheck](../ssh-host-healthcheck/SKILL.md) Section 2). ## 4. Targeted triage + handoff Match the symptom to the right next runbook -- do **not** re-derive their content here. - **Disk breach or a mount near full** -> [ssh-disk-cleanup](../ssh-disk-cleanup/SKILL.md). It enumerates before pruning and handles the "never volume-prune blindly" rule. - **A Docker container is the bottleneck (high CPU/mem in `ssh_host_processes`, or a service the user named is container-managed)** -> [ssh-docker-incident-response](../ssh-docker-incident-response/SKILL.md). - **A systemd service is failing or flapping** -> [ssh-systemd-diagnostics](../ssh-systemd-diagnostics/SKILL.md). Status / journalctl / show all read-only. - **Service crashed, restart needed, no clear container or systemd unit** -> escalate to an operator with low-access or exec tier; do not attempt restart from this runbook. ## Boundaries - Read-only tier throughout. Restart, edit, or truncate operations require `ALLOW_LOW_ACCESS_TOOLS` or `ALLOW_DANGEROUS_TOOLS` and live in the per-domain runbooks linked above. - If this runbook surfaces a problem that needs mutation, hand off to a human with the correlation ID from the audit log -- never self-escalate the tier mid-incident. - Non-Linux targets: `ssh_host_processes` and `ssh_host_alerts` may return empty on Windows / BSD. Don't read absence as health. ## Related runbooks - [ssh-host-healthcheck](../ssh-host-healthcheck/SKILL.md) -- run first if the request is "tell me the state", not "the host is broken". - [ssh-disk-cleanup](../ssh-disk-cleanup/SKILL.md) -- targeted recovery for a disk breach. - [ssh-docker-incident-response](../ssh-docker-incident-response/SKILL.md) -- when a container workload is the cause. - [ssh-systemd-diagnostics](../ssh-systemd-diagnostics/SKILL.md) -- systemd unit-level diagnostics.
From Nightreaver/python-ssh-mcp, GPL-3.0.
More from Nightreaver/python-ssh-mcp
- 0.529score
ssh-long-running-job
Nightreaver
Launch a multi-hour command in a detached tmux session, record it in host-notes, and poll for completion across sessions
SkillCFreshness: C★ 8Claude Code +9 - 0.529score
ssh-host-snapshot
Nightreaver
Capture a structured point-in-time inventory of a host (packages, systemd, network, storage, docker) for later diff or rollback reference
SkillCFreshness: C★ 8Claude Code +9 - 0.526score
ssh-apt-show
Nightreaver
Show combined apt-cache show + policy details for one package
SkillCFreshness: C★ 8Claude Code +9 - 0.526score
ssh-container-rollout
Nightreaver
Roll a single standalone Docker container to a new image tag with pre-pull, health verification, and rollback
SkillCFreshness: C★ 8Claude Code +9 - 0.526score
ssh-deploy-verify
Nightreaver
Upload an artifact, verify the remote hash, bring the stack up, and tail logs to confirm health
SkillCFreshness: C★ 8Claude Code +9 - 0.526score
ssh-docker-incident-response
Nightreaver
Diagnose a Docker container or compose stack that's failing, looping, or unresponsive
SkillCFreshness: C★ 8Claude Code +9 - 0.526score
ssh-host-healthcheck
Nightreaver
Standard "is this host OK right now" pass combining identity, alerts, disk, processes, and uptime
SkillCFreshness: C★ 8Claude Code +9 - 0.526score
ssh-disk-cleanup
Nightreaver
Investigate a disk-full host and recover space safely -- find before prune, never volume-prune from the LLM
SkillCFreshness: C★ 8Claude Code +9 - 0.526score
ssh-apt-list
Nightreaver
List APT packages on a remote host, filtered by mode and optional pattern
SkillCFreshness: C★ 8Claude Code +9 - 0.526score
ssh-integrity-audit
Nightreaver
Confirm a host's identity, file integrity, artifact signatures, and surface SUID / world-writable oddities
SkillCFreshness: C★ 8Claude Code +9 - 0.526score
ssh-verify-signature
Nightreaver
Verify the signature of a remote artifact (GPG, cosign, minisign) via ssh_exec_run
SkillCFreshness: C★ 8Claude Code +9 - 0.523score
ssh-apt-mark
Nightreaver
Hold or unhold APT packages on a remote host (pin / unpin)
SkillCFreshness: C★ 8Claude Code +9
Signals
- Stars
- 8
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Jun 1, 2026 (4 months ago)
- Last release
- Jun 2, 2026 (4 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- GPL-3.0
- Repository
- github.com/Nightreaver/python-ssh-mcp
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from Nightreaver
- 0.529score
ssh-long-running-job
Nightreaver
Launch a multi-hour command in a detached tmux session, record it in host-notes, and poll for completion across sessions
SkillCFreshness: C★ 8Claude Code +9 - 0.529score
ssh-host-snapshot
Nightreaver
Capture a structured point-in-time inventory of a host (packages, systemd, network, storage, docker) for later diff or rollback reference
SkillCFreshness: C★ 8Claude Code +9 - 0.526score
ssh-apt-list
Nightreaver
List APT packages on a remote host, filtered by mode and optional pattern
SkillCFreshness: C★ 8Claude Code +9 - 0.526score
ssh-disk-cleanup
Nightreaver
Investigate a disk-full host and recover space safely -- find before prune, never volume-prune from the LLM
SkillCFreshness: C★ 8Claude Code +9 - 0.526score
ssh-container-rollout
Nightreaver
Roll a single standalone Docker container to a new image tag with pre-pull, health verification, and rollback
SkillCFreshness: C★ 8Claude Code +9 - 0.526score
ssh-apt-show
Nightreaver
Show combined apt-cache show + policy details for one package
SkillCFreshness: C★ 8Claude Code +9
Cite this page
ssh-incident-response skill. Agent Mart. https://agentmart.dev/skills/nightreaver-ssh-incident-response (last updated 2026-10-24)