From 24e4493e1d1810da530799ad7fe4941dfba82160 Mon Sep 17 00:00:00 2001 From: chrome-storm-c442 Date: Wed, 25 Feb 2026 02:12:12 -0500 Subject: [PATCH] =?UTF-8?q?v1.8.52:=20fix=20skill=20=E2=80=94=20enforce=20?= =?UTF-8?q?SFTP=20upload/download,=20ban=20stdin/base64=20file=20transfer?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- tools/skill-ssh.md | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/tools/skill-ssh.md b/tools/skill-ssh.md index f15b647..c557a50 100644 --- a/tools/skill-ssh.md +++ b/tools/skill-ssh.md @@ -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` для больших/бинарных.