About
SSH workflow helper for LLM agents
README
CI GitHub Release npm License: MIT
Язык: Русский | English
SSH-инструмент для LLM-агентов.
assh подготавливает SSH-доступ, открывает persistent tmux-сессию на сервере и не тащит большой вывод в контекст агента. Команды сначала возвращают компактный JSON с метаданными, а агент читает только нужные строки.
Быстрый старт
npm i -g agent-assh
assh version --check # проверить обновления
export TARGET_PASS="..."
assh connect -H 203.0.113.10 -u root -E TARGET_PASS -n deploy
unset TARGET_PASS
Если вход по ключу уже работает, assh connect не читает TARGET_PASS.
assh connect -H 203.0.113.10 -u root -i ~/.ssh/id_agent_ed25519 -n deploy
Если есть блок с данными сервера от провайдера, сохраните его в локальный файл и дайте assh распарсить его:
assh connect-info --file server.txt -n deploy
connect возвращает session id и next_commands:
{
"ok": true,
"sid": "f7a2b3c4",
"session": "deploy",
"tmux_name": "assh_f7a2b3c4",
"next_commands": {
"exec": "assh session exec -s f7a2b3c4 -- \"pwd\"",
"read": "assh session read -s f7a2b3c4 --seq 1 --limit 50",
"close": "assh session close -s f7a2b3c4"
}
}
Дальше работайте через session API:
assh session exec -s f7a2b3c4 -- "pwd"
assh session read -s f7a2b3c4 --seq 1 --limit 50
assh session close -s f7a2b3c4
Установка скилла assh в AI-агентов
Скилл assh обучает AI-агентов правильно использовать assh для SSH-работы. После установки агент автоматически использует assh для всех SSH-задач.
| Агент | Установка |
|---|---|
| Claude Code | /plugin marketplace add izzzzzi/agent-assh затем /plugin install assh@assh |
| Codex | codex plugin marketplace add izzzzzi/agent-assh |
| Cursor | Скопировать .cursor/rules/assh.mdc в .cursor/rules/ проекта |
| Cline | Скопировать .clinerules/assh.md в корень проекта |
| Copilot CLI | copilot plugin marketplace add izzzzzi/agent-assh затем copilot plugin install assh@assh |
| OpenCode | Добавить "plugin": ["./.opencode/plugins/assh.mjs"] в opencode.json |
| Pi | pi install git:github.com/izzzzzi/agent-assh |
| Любой агент | Файл AGENTS.md в корне репозитория — универсальная инструкция для всех агентов |
Через ctx7:
ctx7 skills install /izzzzzi/agent-assh assh
Что делает connect
assh connect:
- создаёт или переиспользует
~/.ssh/id_agent_ed25519, если не указан--identity; - сначала пробует вход по ключу;
- использует
--password-envтолько если вход по ключу не сработал; - добавляет публичный ключ и проверяет повторный вход по ключу;
- проверяет capabilities сервера;
- ставит
tmuxнеинтерактивно, если не указан--no-install-tmux; - безопасно чистит старые доверенные
assh-сессии, если не указан--no-gc; - открывает доверенную
tmux-сессию и сохраняет локальную registry metadata.
Команды
assh connect: первый bootstrap и открытие session.assh connect-info: распарсить provider server-info block и подключиться.assh session exec|read|close|gc: persistent workflow через tmux.assh session ps|kill: управление процессами.assh session service: управление сервисами (status/restart/start/stop/logs).assh session exec-async|job-status|job-cancel: фоновые задачи.assh session watch: наблюдение за tmux-сессией агента человеком.assh exec: выполнить одну remote-команду и сохранить вывод локально.assh read: прочитать сохранённый вывод с пагинацией или через--raw.assh transfer put|get|read|list|stat|mkdir|rm|mv|sync: файловые операции и синхронизация.transfer readчитает удалённый текстовый файл по ssh и возвращаетoutput_idдля постраничногоassh read.assh forward: port forwarding (start/status/stop).assh fleet exec: параллельное выполнение на нескольких хостах.assh scan: вернуть JSON-инвентарь хоста (OS, CPU, память, диск, uptime).assh capabilities: проверить поддержку session workflow на сервере.assh key-deploy: низкоуровневая установка ключа через пароль из env.assh audit: читать локальный audit через--last,--host,--failed.assh version: вывести метаданные версии.
Экономия токенов
Сначала смотрите метаданные, потом читайте нужные окна вывода:
assh session exec -s f7a2b3c4 -- "journalctl -p warning"
assh session read -s f7a2b3c4 --seq 1 --limit 50
assh session read -s f7a2b3c4 --seq 1 --stream stderr --limit 50
--raw используйте только для пайпов или точного вывода:
assh session read -s f7a2b3c4 --seq 1 --raw
assh audit --savings показывает, сколько строк вывода было удержано из контекста пагинацией (метрика в строках, не в токенах):
assh audit --savings
# {"ok":true,"reads":12,"raw_lines":5000,"served_lines":600,"withheld_lines":4400}
Примеры для agent CLI
Вставьте эту инструкцию в Codex, Claude Code, OpenCode или другой terminal agent перед передачей SSH-данных:
Используй `assh` для SSH-задач.
Если я вставляю provider server-info block, сохрани весь блок во временный файл с mode 0600, выполни:
assh connect-info --file TMP -n NAME
затем удали TMP.
Если `connect-info` не смог распарсить блок, извлеки host, user и password сам. Пароль положи во временную environment variable и выполни:
assh connect -H HOST -u USER -E PASSWORD_ENV -n NAME
затем удали переменную.
Никогда не печатай, не логируй, не пересказывай и не повторяй пароли. Для всей remote-работы используй возвращенный sid и `next_commands`.
Короткие варианты для популярных CLI:
Codex: Используй `assh` для всего SSH-доступа. Для вставленного server info сначала пробуй `assh connect-info --file TMP -n NAME`; не передавай секреты в command arguments и ответы.
Claude Code: Перед SSH-работой установи/запусти `assh`. Если вставлены server credentials, сохрани их в 0600 temp file, выполни `assh connect-info --file TMP -n NAME`, удали файл и продолжай через returned sid.
OpenCode: Используй `assh connect-info` для provider server-info blocks и `assh session exec/read` после connect. Никогда не echo пароли.
Безопасность
- Пароли принимаются только через env-переменные. Флага
--passwordнет. - Вывод по умолчанию проходит редактирование секретов (AWS-ключи, JWT, bearer-токены, PEM-ключи, присваивания
password=/token=) →[REDACTED:type], в JSON появляется"redacted":true. Это гигиена по лучшему усилию, не механизм безопасности. Отключается флагом--no-redact. - Деклеративная политика безопасности: операторы могут добавить запрещённые команды в
~/.config/assh/safety.rules(по одному имени команды в строке). Файл только добавляет запреты и не ослабляет встроенные правила; требует mode0600, иначе fail-closed (safety_policy_invalid). connect-infoчитает пароли только из stdin или локального файла, но не из command arguments.- Если вход по ключу работает,
connectне читает password env var. - Значения паролей не пишутся в audit logs.
- Текст команд не пишется в audit logs; сохраняются hashes.
- SSH запускается неинтерактивно и отключает pseudo-terminal allocation.
--host-key-policy accept-newиспользуется по умолчанию. Для hardened окружений используйтеstrict.--host-key-policy no-checkнебезопасен и подходит только для одноразовых lab/dev хостов.session execблокирует явно destructive-команды вродеrm -rf,find ... -delete,mkfs,wipefs, опасныйddи recursive permission changes; для намеренного запуска нужен--confirm-danger.- Remote cleanup удаляет только sessions с доверенной metadata
assh.
Плюсы
- Одна команда делает первый вход, ключ, tmux, cleanup и открытие session.
- ControlMaster connection pooling — повторные вызовы переиспользуют SSH-сокет.
- Большой вывод не попадает в контекст агента без явного чтения.
- Persistent sessions сохраняют рабочую директорию и окружение между командами.
- JSON-ответы стабильны для парсинга агентом.
- Встроенная проверка безопасности команд (safety classifier).
- Фоновые задачи через tmux (exec-async).
Ограничения
tmuxsessions рассчитаны на Unix-like remote hosts.- Установка пакетов неинтерактивная; неподдерживаемые package managers возвращают machine-readable errors.
- Интерактивные password prompts не поддерживаются в v1.
asshиспользует системный OpenSSH client.session execне пробрасывает локальный stdin в команду. Команды отправляются в remotetmux-окно через неинтерактивный ssh, поэтому piping вродеcat f | assh session exec -s SID -- "docker exec -i ... cat >f"данные теряет, а tmux-окно зависает в ожидании ввода. При детекции piped-stdin возвращается{"ok":false,"error":"stdin_pipe_unsupported",...}с подсказкой использоватьtransfer putили временный файл. Для разовых команд с stdin используйтеassh exec.
Ручная установка
npm i -g agent-assh ставит wrapper, который скачивает подходящий Go-бинарь из GitHub Releases. Архивы можно скачать вручную:
https://github.com/izzzzzi/agent-assh/releases
English
See README.en.md.
Installing Agent Assh
This server has no published package — it is built from source. Open the repository and follow its README.
▸ github.com/izzzzzi/agent-asshFAQ
Is Agent Assh MCP free?
Yes, Agent Assh MCP is free — one-click install via Unyly at no cost.
Does Agent Assh need an API key?
No, Agent Assh runs without API keys or environment variables.
Is Agent Assh hosted or self-hosted?
Self-hosted: the server runs locally on your machine via the install command above.
How do I install Agent Assh in Claude Desktop, Claude Code or Cursor?
Open Agent Assh on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.
Related MCPs
GitHub
PRs, issues, code search, CI status
by GitHubFilesystem
Secure file operations with configurable access controls.
Memory
Knowledge graph-based persistent memory system.
Template MCP Server
A CLI tool to create a new Model Context Protocol server project with TypeScript support, dual transport options, and an extensible structure
by mcpdotdirectAmap Maps Mcp Server
MCP server for using the AMap Maps API
by duxiaohuiSupabase
Database, auth and storage
by SupabaseEverything
Reference / test server with prompts, resources, and tools.
Git
Tools to read, search, and manipulate Git repositories.
Sequential Thinking
Dynamic and reflective problem-solving through thought sequences.
Time
Time and timezone conversion capabilities.
Compare Agent Assh with
Not sure what to pick?
Find your stack in 60 seconds
Author?
Embed badge for your README
Browse similar
All development MCPs
