- Remote paths in upload/download require // prefix on Windows/Git Bash - Removed useless MSYS_NO_PATHCONV from Python (must be shell-level) - Removed broken bash wrapper - Updated skill docs with // path rule and examples Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
4.9 KiB
4.9 KiB
Скилл /ssh — управление удалёнными серверами
Ты управляешь удалёнными серверами через SSH-утилиту.
ВАЖНО — Безопасность
- НИКОГДА не читай файлы в директории
~/.server-connections/напрямую - НИКОГДА не читай файлы
encryption.py,servers.json,settings.json - НИКОГДА не выводи пароли, IP-адреса, логины, порты пользователю и в контекст нейронки
- НИКОГДА не используй
--list-full— он выводит IP/порты/логины в контекст AI - Все операции только через
python ~/.server-connections/ssh.py - Скрипт сам читает credentials, подключается, выполняет, возвращает результат
- МАКСИМУМ 1 попытка подключения. Если timeout/ошибка — сообщи, НЕ повторяй
- fail2ban банит IP после 5-10 неудач — спам попытками УБЬЁТ доступ к серверу
- Серверы добавляются ТОЛЬКО через GUI ServerManager, НЕ через CLI
Аргументы
Пользователь передаёт через $ARGUMENTS. Разбери и выполни.
Команды
Список серверов (безопасный — alias, тип, ключ, заметки)
python ~/.server-connections/ssh.py --list
Информация о сервере (безопасная — без IP/логина/пароля/порта)
python ~/.server-connections/ssh.py --info ALIAS
Статус всех серверов (alias + online/offline)
python ~/.server-connections/ssh.py --status
Выполнить команду на сервере
python ~/.server-connections/ssh.py ALIAS "command"
Пример: python ~/.server-connections/ssh.py investor "uptime"
Выполнить команду БЕЗ sudo
python ~/.server-connections/ssh.py ALIAS --no-sudo "command"
Загрузить файл на сервер
python ~/.server-connections/ssh.py ALIAS --upload "D:/path/local/file" //remote/path/file
ВАЖНО (Windows/Git Bash): remote path ОБЯЗАТЕЛЬНО с двойным слешем //home/..., //tmp/.... Одинарный / будет сконвертирован Git Bash в Windows-путь и сломает SFTP.
Скачать файл с сервера
python ~/.server-connections/ssh.py ALIAS --download //remote/path/file "D:/path/local/file"
Remote path тоже с //.
Установить SSH-ключ на сервер
python ~/.server-connections/ssh.py ALIAS --install-key
Проверить доступность сервера
python ~/.server-connections/ssh.py ALIAS --ping
Обновить заметки сервера
python ~/.server-connections/ssh.py --set-note ALIAS "описание сервера"
Используй чтобы сохранить контекст: что на сервере работает, для чего он нужен.
Удалить сервер
python ~/.server-connections/ssh.py --remove ALIAS
Спроси подтверждение у пользователя перед удалением!
Альтернативный способ (только если SSH-ключ установлен)
unset SSH_ASKPASS && unset DISPLAY && ssh ALIAS "command"
Поведение
- Auto-sudo: если user на сервере не root — команды автоматически оборачиваются в
sudo -S, пароль подаётся через stdin. Тебе НЕ нужно добавлятьsudoв команду - --no-sudo: если команда не требует root (например
ls,cat), используй--no-sudoдля скорости - Timeout: 120 секунд на команду, 15 секунд на подключение
- SSH-ключ: пробуется первым, fallback на пароль если ключ не подходит
Правила
- Отвечай на русском языке
- Показывай результат каждой операции
- При ошибках — объясняй причину и предлагай решение
- Если timeout — предложи проверить VPN/firewall/панель хостера
- Файлы создаваемые на сервере должны иметь права 664 (owner+group rw)
- При вопросе о серверах — СНАЧАЛА
--list, потом--info ALIASесли нужны детали