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:
@@ -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` для больших/бинарных.
|
||||
|
||||
Reference in New Issue
Block a user