mcp-ssh-live@0.1.0
CAUTION· not startedPublisher claims: "Interactive, streaming SSH tool for LLM agents via MCP (Model Context Protocol)" Observed in sandbox: no network, touches nothing outside the project, writes no memory.
Coverage
Not started: dependency install failed; the server itself was not observed.- Tested
- the dependency install step · every file read, file written and host contacted by what ran
- Not tested
- server startup · the tool list · tool behavior
What this means for the label: Caution here covers what ran. The server's tools were not exercised with a real credential, so nothing about their behavior is asserted; the credential summary below says what to do with that.
Before you give it your token
- It will ask for
- no credential variables read in the code
- Where it talks to
- no vendor host named in the code
- What the honeypot saw
- no credential files read · no network
- What we could not test
- server startup · the tool list · tool behavior
Connect it under the guard. Not started: dependency install failed; the server itself was not observed. The code names no credential variable; the guard pins the network to what the honeypot saw and logs every call.
Never paste a credential into a chat, a ticket or a report, including ours. How the guard holds it.
Is [email protected] safe to install?
KillerSkills ran it in the KillerSkills honeypot sandbox (2 scenarios; not started: dependency install failed; the server itself was not observed) on 2026-11-09 and scored it 68/100 (Caution). It is not known to be malicious, but it has behaviour or code a security policy should decide on before install. Notable findings: Destructive file system command detected; References a credential file in the home directory; Privileged sudo command. Summary: no network, touches nothing outside the project, writes no memory.
Behavior trace
Honeypot run · 0 s · 2 scenarios · 0 deviationsStatic findings
# chmod failure is non-fatal — the bytes are alreadyFix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts." ssh_exec('rm -rf /tmp/mcp-persistent/<id>')"Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.``kill -TERM/-KILL`` on a separate short session. This sidesteps theFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.# the dependency would be circular, and the kill command weFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.``ssh_remove_job`` and during server shutdown. Does NOT kill theFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.# Try to kill the remote process. We need a separate session;Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell."default key files (~/.ssh/id_*).\n\n"Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose."ssh_upload: chmod %o on %r failed: %s",Fix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts."program sees a complete line (this is what 'sudo -S' and "Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.via the standard Phase 3 kill path — wired up by the signal tool).Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell."""Send ``kill -SIGNAL pid`` on a fresh short session.Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.programs (``sudo -S``, REPLs, ``passwd``) and forFix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.dies — for a hard kill the LLM should call ``ssh_signal(KILL)`` firstFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.capture_pid: wrap the command so we can kill it by PID on timeout.Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell."""Send ``kill -<SIG> <pid>`` to the remote on a fresh exec channel.Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell."NOT guarantee the remote process dies — for a hard kill "Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.# send ``kill -TERM``/``-KILL`` to each live job's remote pid viaFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell."the remote after the transfer. A chmod failure is "Fix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts."default key files (~/.ssh/id_*).\n\n"Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose."in the response means the chmod was skipped or rejected."Fix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.``capture_pid=False``), so we can kill it on timeout viaFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.Does NOT kill the remote process — that's ``ssh_signal``'s job.Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.a short ``kill -TERM <pid>`` exec on the same transport — sameFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.# a kill path that already set status=KILLED isn'tFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.process alive, and the LLM should either accept that or kill it.Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.--host stage=10.0.0.5 --user deploy --key ~/.ssh/stage_keyFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.§"Edge cases & decisions" → "2. Interactive input (sudo password)" forFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell."Optional mode (octal, e.g. 493 for 0o755) runs chmod on "Fix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.to pre-bake the input into the command (``echo pw | sudo -S …``),Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.* ``sudo -S -p ''`` reads the password from stdin (one line).Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.(Phase 3) for the ``kill -SIGNAL <pid>`` fallback on OpenSSH serversFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell."by ssh_spawn). Used for password prompts (sudo -S -p ''), "Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.# ------------------------------------------------------------------ graceful kill helperFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.# (used by ssh_signal to fall back to ``kill -SIGNAL <pid>``Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.which includes the spawned job. We wait up to ~500 ms for the killFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.present on real servers. Relying on ``send_signal`` alone means "kill myFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.2. **``kill -<SIG> <pid>``** fallback — opened as a brand-new shortFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.# shells accept both ``kill -TERM`` and ``kill -15``, so we normalizeFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.# * The wire format on the remote is ``kill -<NAME>`` where ``<NAME>``Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.Cost to the agent
Tokens estimated at four characters each. The tool list is re-read by the agent on every turn, so it is the number to compare between servers that do the same job: ranked across the index.
Known vulnerabilities
No advisories in OSV for mcp-ssh-live@0.1.0 as of 5d ago. This is the package itself, not its dependencies.
What would make this Verified
12 points to 80 · weights: behavior 45%, static 25%, prompt 15%, publisher 15%- Unclaimed publisher≈ +8 on the totalClaim pmboxbiz: a verified publisher gets +50 on publisher trust. It is free and usually instant with GitHub sign-in.
- Destructive file system command detected≈ +4 on the totalBuild commands from fixed arguments; do not interpolate untrusted strings into a shell.
- References a credential file in the home directory≈ +4 on the totalStop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
- Privileged sudo command≈ +4 on the totalBuild commands from fixed arguments; do not interpolate untrusted strings into a shell.
- Access to sensitive file paths≈ +4 on the totalStop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
- File permission modification command≈ +2 on the totalRequest the narrowest permission that works; replace wildcards with the exact paths or hosts.