@seomi/ssh
v0.1.2
Published
One-command CLI installer that sets up passwordless SSH access for AI agents in any project (dev/prod/custom servers) and writes the access map into AGENTS.md / CLAUDE.md.
Maintainers
Readme
@seomi/ssh
English | Русский
Одной командой настраивает беспарольный SSH-доступ для AI-агента к вашим серверам.
@seomi/ssh — CLI-инсталлятор: за один интерактивный прогон он настраивает доступ агента
по SSH-ключу к одному или нескольким серверам (dev / prod / кастомные) и записывает карту
доступа в инструкции агента (AGENTS.md / CLAUDE.md). Облегчённый родственник
@seomi/wp-mcp — взяты только SSH-визард и логика
инструкций агенту, без WordPress и MCP.
npm install -g @seomi/ssh
cd my-project
seomi-ssh initВозможности
init— интерактивная настройка. Спрашивает про серверы в цикле (роль, host, user, port, путь к ключу, опционально рабочая директория) и повторяет «добавить ещё?», пока не откажешься. Любое число серверов: только prod; dev + prod; произвольный набор.- SSH-визард на каждый сервер — генерация ed25519-ключа (или переиспользование),
копирование публичного ключа (
ssh-copy-id→ ssh-pipe fallback), проверка поssh -o BatchMode=yes, и при неудаче — печать ручной подсказки с содержимым.pub. - Запись инструкций агенту — managed-блок с картой серверов и готовыми примерами
ssh/scp/rsync, значения берутся из.claude/.env. - Skill
aif-ssh— копируется в.claude/skills/проекта и учит агента пользоваться настроенным доступом. - Идемпотентность — повторный запуск не дублирует ключи, env-записи и managed-блок.
updateиdoctorобъявлены в--help, но пока не реализованы (заглушки).
Команды
| Команда | Что делает |
|---------|------------|
| seomi-ssh init | Интерактивная настройка (см. выше) |
| seomi-ssh init --dry-run | Прогон опроса без записи на диск и SSH-вызовов; превью блока |
| seomi-ssh init --verbose | Включает debug-логирование |
| seomi-ssh --help | Справка |
| seomi-ssh --version | Версия |
| seomi-ssh update / doctor | Зарезервированы (пока не реализованы) |
Требования
- Node 20+ для самого CLI.
- OpenSSH client (
ssh,ssh-keygen) на локальной машине.ssh-copy-id— опционально: без него (типично для Windows OpenSSH) визард использует портируемый ssh-pipe fallback.
Как работает SSH-визард
Для каждого сервера — цепочка стратегий с graceful degradation:
- Keygen — генерирует
ed25519, если ключа нет (ssh-keygen -N '', пустая passphrase — агенту нужен неинтерактивный доступ), иначе переиспользует существующий. - Copy —
ssh-copy-id(один раз спросит пароль). Если бинарника нет на PATH — fallback: публичный ключ передаётся в~/.ssh/authorized_keysчерезssh(с дедупликацией). - Verify —
ssh -o BatchMode=yes ... 'echo ok'. BatchMode отключает запрос пароля, поэтому ненулевой код = ключ не принят. - Fallback — при неудачной проверке печатается ручная подсказка с содержимым
.pub.
Ошибка одного сервера не прерывает прогон — остальные продолжают.
Конфигурация
Параметры доступа лежат в .claude/.env (gitignored) плоскими ключами с префиксом роли.
Один сервер = одна группа ключей:
| Ключ | Назначение | Пишется |
|------|------------|---------|
| SSH_<PREFIX>_HOST | домен или IP | всегда |
| SSH_<PREFIX>_USER | SSH-пользователь | всегда |
| SSH_<PREFIX>_PORT | порт | если задан |
| SSH_<PREFIX>_KEY | путь к приватному ключу | всегда |
| SSH_<PREFIX>_ROOT | рабочая директория на сервере | если задана |
| SSH_SERVERS | csv-реестр всех префиксов | всегда |
<PREFIX> — это роль, нормализованная в UPPER_SNAKE_CASE (prod → PROD, staging-eu →
STAGING_EU); при повторе роли префикс получает уникальный суффикс (PROD, затем PROD_2).
.claude/.env — первое место, куда агент смотрит за реквизитами доступа, а не ~/.ssh/config.
Пример
$ seomi-ssh init
› Шаг 1: Опрос серверов
? Роль сервера › prod
? [prod] Host (домен или IP) › prod.example.com
? [prod] SSH-пользователь › ai-agent
? Добавить ещё один сервер? › No
› Шаг 2: Настройка SSH-ключей
[ok] «prod»: ключ настроен и проверен
› Шаг 4: Инструкции агенту (AGENTS.md / CLAUDE.md)
[ok] created: AGENTS.mdДокументация
| Раздел | Описание |
|--------|----------|
| Команда init | Поведение init, конфигурация .claude/.env, примеры, диагностика |
Лицензия
Proprietary — © SEOMI. См. LICENSE.
Связанные проекты
- @seomi/wp-mcp — родственный WordPress/MCP-пакет, от которого произошёл этот.
- ai-factory — спутник для AI-контекста разработки.
Разработка и сопровождение — Разработка сайтов SEOmi.ru.
