Borrowing it
Nothing to install: this file belongs to KonghaYao/peri. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/KonghaYao/peri/main/.claude/skills/ssh-cli/SKILL.mdgit clone --depth 1 https://github.com/KonghaYao/periWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/konghayao/peri/ssh-cli)<a href="https://agentmods.dev/skills/konghayao/peri/ssh-cli"><img src="https://agentmods.dev/badge/skills/konghayao/peri/ssh-cli/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/konghayao/peri/ssh-cli"><img src="https://agentmods.dev/badge/skills/konghayao/peri/ssh-cli.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector warn
SkillSpector: 1 finding, up to high
These are SkillSpector’s own severities. On a checked sample its high-severity flags on skills were ~96% false positives — a documented command, a public API, a “never do X” rule — so we show them as a caution to read, not a verdict. Why →
- high Privilege Escalation · line 20 Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.Fix: Remove references to credential paths. Use environment variables or secrets managers. For docs, use placeholder paths (e.g., /path/to/config). Never load .env or token files in production code paths.
What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00062 | $0.01591 |
| Opus 5.5 | $0.00025 | $0.00636 |
| Sonnet 5.5 | $0.00012 | $0.00318 |
| Haiku 4.5 | $0.00006 | $0.00159 |
Grade A, and why
ssh-cli scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 1mo ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 117 lines — stays where its author put it; the contents beside it link to each section on GitHub.
SSH CLI
通过系统 ssh 二进制操作远程机器。单文件零依赖 CLI,无需安装任何东西:
node .claude/skills/ssh-cli/scripts/ssh-cli.js <子命令> ...
子命令
| 子命令 | 用途 | 示例 |
|---|---|---|
exec |
远程执行命令(支持管道/&&/重定向) | exec dev-server "cd /app && npm test" |
read |
读远程文本文件(可只读行区间) | read dev-server /etc/hosts --offset 5 --limit 10 |
write |
写/追加远程文件 | write dev-server /app/.env "KEY=value"(追加加 --append,长内容用 --stdin) |
edit |
精确替换(old_string 必须唯一,多匹配加 --all) |
edit dev-server /app/main.js "old" "new" |
ls |
目录列表 | ls dev-server /app |
push |
本地上传远程(scp,--recursive 传目录) |
push ./dist dev-server /srv/app/dist |
pull |
远程下载本地(scp) | pull dev-server /var/log/app.log ./app.log |
test |
连接诊断(主机名/系统/连通性) | test dev-server |
交互模式(推荐)
连续操作同一台主机时,直接 ssh-cli <host> 进入主机上下文,之后只敲子命令(host 自动带入),exit 或 Ctrl-D 退出:
node .claude/skills/ssh-cli/scripts/ssh-cli.js dev-server
# dev-server> exec "cd /app && npm test"
# dev-server> read /etc/hosts --limit 10
# dev-server> push ./dist /srv/app/dist --recursive
# dev-server> pull /var/log/app.log ./app.log
# dev-server> exit
交互模式下 push/pull 省略 host:push <local> <remote>、pull <remote> <local>;其余子命令参数与单次调用一致。所有命令照常受白名单/审计约束。
参数约定
host:user@host或~/.ssh/config别名;凭据只走系统 ssh(config/agent/key),密码不进入脚本(需要账号密码的机器先ssh-copy-id)- 全局选项:
--hosts <白名单>(逗号分隔,*放行所有;不传默认放行)、--timeout <ms>、--port <n>、--key <path>、--audit-log <path> - 环境变量:
SSH_CLI_ALLOWED_HOSTS/SSH_CLI_TIMEOUT/SSH_CLI_PORT/SSH_CLI_AUDIT_LOG/SSH_CLI_STRICT_HOST_KEY - 退出码:
exec远程非零退出返回同码;超时 124;其他错误 1 —— 可用于判断成败
账号密码登录(无 key 的机器)
ssh-cli 不支持密码认证(脚本禁止接触密码,BatchMode=yes 强制 key/agent)。遇到需要账号密码的主机,先让用户执行 ssh-copy-id 一次性导入 key(密码只在此刻、在用户自己的终端输入,不经过任何脚本):
# 用户终端执行(只需一次):
ssh-copy-id [email protected] # 输入账号密码 → 之后全免密
指引流程:ssh-copy-id 报错或用户没配 key 时,提示先 ssh-keygen -t ed25519 再执行;导入后所有 ssh-cli 子命令直接可用。
工作流
1. 先诊断再操作
未知/新主机先 test,确认连通性与认证:
node .claude/skills/ssh-cli/scripts/ssh-cli.js test [email protected]
What ships with it
1 file beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 1mo ago First seen · 117 lines · 62 tokens per session scan A 76355558b997
ssh-cli is a skill published in the GitHub repository KonghaYao/peri (247 stars, last pushed today), licensed Apache-2.0. It adds 62 tokens to every session and 1,591 once invoked, about $0.0002 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
babysit-pr
Babysit a GitHub pull request after creation by continuously polling review comments, CI checks/workflow runs, and mergeability state until the PR is merged/closed or user help is required. Diagnose failures, retry likely flaky failures up to 3 times, auto-fix/push branch-related issues when appropriate, and keep…
plugin-creator
Create and scaffold plugin directories for Codex with a required .codex-plugin/plugin.json, optional plugin folders/files, valid manifest defaults, and personal-marketplace entries by default. Use when Codex needs to create a new personal plugin, add optional plugin structure, generate or update marketplace entries…
codex-pr-body
Update the title and body of one or more pull requests.
remote-tests
Testing against remote executors in integration tests.
update-v8-version
Update Codex's pinned v8 / rustyv8 versions, validate the release-candidate path, and investigate failed V8 canary or artifact builds. Use when asked to bump V8, update rustyv8 artifacts, prepare or validate a V8 release candidate, check v8-canary, or diagnose why a V8 version update no longer builds.
qa-testing
Verify your work by actually operating the app or website you changed, instead of assuming it works. Strongly recommended whenever you build, modify, or debug a web app, website, or desktop GUI app. Drive real browsers with the agent-browser CLI and native desktop apps with the cua-driver CLI. These are installed on…