v1.8.52: fix skill — enforce SFTP upload/download, ban stdin/base64 file transfer

Prevents Claude Code from using creative shell-based file transfer methods
(echo/base64/cat stdin) that fail with exit 127 on large files.
Skill now clearly mandates --upload/--download (SFTP) as the ONLY allowed method.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
chrome-storm-c442
2026-02-25 02:12:12 -05:00
parent 4959004a3f
commit 24e4493e1d

View File

@@ -60,17 +60,19 @@ python ~/.server-connections/ssh.py ALIAS "command"
python ~/.server-connections/ssh.py ALIAS --no-sudo "command"
```
### Загрузить файл на сервер
### Загрузить файл на сервер (ЕДИНСТВЕННЫЙ правильный способ)
```bash
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.
**НИКОГДА не используй echo/base64/cat/stdin для передачи файлов — только `--upload`!**
### Скачать файл с сервера
### Скачать файл с сервера (ЕДИНСТВЕННЫЙ правильный способ)
```bash
python ~/.server-connections/ssh.py ALIAS --download //remote/path/file "D:/path/local/file"
```
Remote path тоже с `//`.
**НИКОГДА не используй scp/rsync/cat для скачивания — только `--download`!**
### Установить SSH-ключ на сервер
```bash
@@ -186,3 +188,25 @@ unset SSH_ASKPASS && unset DISPLAY && ssh ALIAS "command"
- При вопросе о серверах — СНАЧАЛА `--list`, потом `--info ALIAS` если нужны детали
- SQL-запросы: используй `LIMIT` для больших таблиц, чтобы не перегружать вывод
- Redis: используй SCAN, а не KEYS для больших баз
## КРИТИЧНО — Передача файлов
**ВСЕГДА используй `--upload` / `--download` для передачи файлов.** Это SFTP-протокол: надёжный, поддерживает любые размеры, показывает прогресс.
```bash
# Загрузить файл на сервер (SFTP)
python ~/.server-connections/ssh.py ALIAS --upload "D:/local/file" //remote/path/file
# Скачать файл с сервера (SFTP)
python ~/.server-connections/ssh.py ALIAS --download //remote/path/file "D:/local/file"
```
**ЗАПРЕЩЕНО** передавать файлы через:
- `echo "content" | ssh ALIAS "cat > file"` — обрежет бинарные данные
- `base64` чанки через `exec_command` — медленно, ненадёжно, ломается на больших файлах (exit 127)
- `cat file | ssh` или stdin-пайпы — не работает через Paramiko exec_command
- Любые "креативные" способы передачи через shell-команды
**Если нужно создать файл с текстом на сервере** — сначала создай локально (Write tool), потом `--upload`.
**Если нужно прочитать файл с сервера** — используй `ALIAS "cat /path/file"` для маленьких текстовых, или `--download` для больших/бинарных.