Мой блог
SFTP-браузер в Windows Terminal: как я добавил файловый менеджер сам
Многие пользователи надеялись, что корпорация Microsoft наконец-то интегрирует SFTP браузер в свой официальный Windows Terminal. К сожалению, этого не произошло: несмотря на готовый и работающий функционал в специальном форке terminal-sftp, мейнтейнер отклонил PR #20736 с вполне конкретным объяснением.
Отказ аргументировали тем, что подобное нововведение идет вразрез с изначальным видением продукта. Команда позиционирует софт исключительно как эмулятор терминала и не планирует расширять его функциональность в сторону полноценного просмотра файлов, хотя саму идею разработчики назвали интересной.



Опыт использования терминала и поиск альтернатив
Я применяю Windows Terminal уже на протяжении нескольких лет в рамках своей повседневной работы. Помимо стандартных оболочек PowerShell и Git Bash, я храню в настройках settings.json отдельные профили для удаленного подключения по SSH, используя параметр commandline. Авторизация на хостах настроена по ключам, поэтому отпала необходимость задействовать сторонние менеджеры паролей.
Подобной конфигурации вполне хватает примерно для девяноста процентов моих задач. Однако периодически возникает практическая необходимость управлять файлами на удаленных серверах — быстро загружать их, скачивать себе или вносить правки через привычный текстовый редактор. Для этих целей я перепробовал множество различных утилит, начиная с классического клиента WinSCP и заканчивая связкой стека sshfs через SSHFS-Win с менеджером, а также запуском Code Server.
Закономерно возникает вопрос: зачем перегружать классический эмулятор лишними опциями? Ответ прост — гораздо удобнее применять единый привычный инструмент для решения смежных задач. Именно стремление объединить возможности подтолкнуло сообщество к созданию проекта Tabby, который изначально развивался под именем Terminus. Этот инструмент повторяет интерфейсный опыт терминала от Microsoft, но дополнительно предлагает встроенное хранилище паролей и полноценный SFTP-браузер. Правда, на ранних этапах я столкнулся со множеством багов и перешел на MobaXterm, которым активно пользовался в тот период.
Стоит отметить, что запросы на добавление поддержки SFTP, SCP и даже MODEM-передачи файлов регулярно появлялись в официальном репозитории microsoft/terminal еще с 2019 года. Ярким примером служит Issue #1999, который остается открытым до сих пор и томится в бэклоге в ожидании внедрения плагинов. Аналогичная судьба постигла тикеты #1602, #4151, #11855 и множество других обсуждений, закрытых без реализации.
Самостоятельная реализация SFTP-браузера с помощью ИИ
Официальный репозиторий Windows Terminal представляет собой масштабный программный комплекс на C++, и разобраться в его архитектуре без предварительного опыта работы с данным языком — задача крайне непростая. На один только первичный анализ кодовой базы и поиск оптимального места для встраивания нового браузера у меня ушло несколько недель. Я активно общался с чат-ботами и делал предварительные наброски. Понимая исход официального запроса заранее, я решил не открывать очередной безрезультатный issue, а делегировать разработку логики искусственному интеллекту, заодно протестировав современные возможности агентов кодирования. В качестве основного инструмента я задействовал OpenCode — открытую платформу с бесплатной моделью Zen, и в итоге получил работающее решение.
Ответ мейнтейнера перед закрытием PR.
Интерфейс браузера вызывается прямо во вкладке терминала с помощью комбинации клавиш Ctrl+Shift+S либо через стандартную палитру команд через Ctrl+Shift+P с выбором пункта Open SFTP browser. При самом первом запуске пользователя встречает удобный менеджер профилей. Все создаваемые подключения управляются через визуальный интерфейс, а их параметры надежно сохраняются в конфигурационном файле по пути %LOCALAPPDATA%\Microsoft\Windows Terminal\sftp-profiles.json.

Менеджер управления профилями и подключения к SFTP сессиям.
Сама подсистема SSH и SFTP написана на базе проверенной библиотеки libssh2. При установке первого соединения программа обращается к файлу known_hosts и выводит на экран диалоговое окно для подтверждения цифрового отпечатка ключа удаленного хоста. Что касается безопасности, то пароли для профилей шифруются с помощью системного механизма Windows DPAPI с задействованием функции CryptProtectData, исключая риск их утечки в открытом виде на жесткий диск.
Файловый менеджер.
Разработанный файловый модуль позволяет просматривать структуру каталогов, создавать новые папки и файлы, удалять их, скачивать на локальный ПК, загружать на удаленный сервер или мгновенно отправлять на редактирование в Visual Studio Code. Исходный код получившегося браузера открыт, а готовая собранная версия уже опубликована на странице релизов, поэтому любой желающий может свободно скачать ее и протестировать на своем компьютере.
Итог
Пройдя полный цикл от глубокого изучения чужого кода до самостоятельной реализации и потратив несколько недель на аналитику внедрения, я пришел к простому выводу. Пока крупный опенсорсный проект не готов менять свое продуктовое видение под запросы пользователей, ничто не мешает воплощать собственные задумки и применять их на практике, вместо того чтобы годами ожидать официальной поддержки от мейнтейнеров.
Сегодня, в эпоху стремительного развития генеративного искусственного интеллекта, подобные задачи решаются гораздо быстрее. Лично для меня это стало ценным практическим опытом: на генерацию требуемой логики ушло около двух тысяч токенов и три дня работы, а на последующую отладку и тесты — еще столько же времени.

А какими проверенными решениями вы обычно пользуетесь для быстрого доступа к файлам на удаленных серверах? Обязательно делитесь своими вариантами в комментариях под этой публикацией!
