SFTP-браузер в Windows Terminal

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

Перевод:
"Простите, но это не соответствует нашему видению продукта. Мы - эмулятор терминала, и не намерены расширяться в сторону просмотра файлов. Хотя, это классная функция!"
Всем привет! Я использую Windows Terminal с переменным успехом на протяжении нескольких лет, где помимо оболочек PowerShell и Git Bash, у меня добавлены профили для подключения по SSH, настроенные через параметр commandline в settings.json. Доступ к хостам осуществляется по ключу, поэтому менеджер паролей мне не требуется. Такого решения хватает для 90% моих задач, но когда встает вопрос доступа к файлам на удаленных машинах (скачать, загрузить или изменить файл в привычном редакторе), приходится прибегать к сторонним инструментам. В поисках лучшего и удобного решения, перепробовал многие — начиная с WinSCP и заканчивая стеком sshfs (SSHFS-Win + Manager) и Code Server.
Логичный вопрос — зачем перегружать терминал? Тут все просто — использовать один привычный инструмент для решения связанных задач. Именно поэтому сообщество создало проект Tabby (ранее Terminus), который повторяет пользовательский опыт терминала от Microsoft, но при этом добавляет возможность хранения паролей и SFTP-браузер. Я им пользовался еще на ранних стадиях развития, ловил много багов и быстро от него отказался в пользу MobaXterm, который активно использовал на тот момент.
Запросы на SFTP, SCP и MODEM-передачу файлов начали появляться в репозитории microsoft/terminal начиная с 2019 года. Например, в Issue #1999 (который открыт по сей день и находится в бэклоге, ожидая внедрения плагинов), а также #1602, #4151, #11855 и многих других, которые были закрыты без реализации.
Реализация
Windows Terminal — это большой проект на C++, и без опыта с этим языком разбираться в нем та еще задачка. Только на анализ того, куда встраивать браузер, я потратил несколько недель, переписываясь с чат-ботами и делая наброски. Зная исход заранее, открывать очередной issue я не стал, а логику браузера решил делегировать ИИ, заодно давно хотел опробовать, на что способны агенты кодирования. Для реализации использовал OpenCode — открытый инструмент с бесплатной моделью Zen, и вот, что из этого получилось:

Браузер открывается отдельной вкладкой терминала при нажатии Ctrl+Shift+S или через палитру команд (Ctrl+Shift+P - Open SFTP browser). При первом запуске пользователя встречает менеджер профилей, которые управляются из интерфейса и сохраняются в конфигурационном файле %LOCALAPPDATA%\Microsoft\Windows Terminal\sftp-profiles.json. SSH/SFTP реализован на базе библиотеки libssh2, при первом соединении проверяется known_hosts и выводится диалог подтверждения отпечатка ключа. Пароли профилей хранятся в зашифрованном виде с помощью DPAPI (CryptProtectData), поэтому в открытом виде на диск они не утекают. Файлы можно просматривать, создавать, удалять, скачивать на локальную машину, загружать на сервер или открывать на редактирование в VSCode.

Код браузера открыт, а собранная версия опубликована на странице релизов, откуда ее может загрузить и попробовать любой желающий.
Итог
Пройдя путь от изучения до реализации и потратив недели на анализ внедрения, я сделал простой вывод — пока большой проект не готов расширять свое продуктовое видение, ничто не мешает воплотить любые собственные задумки и использовать их, вместо того чтобы годами ждать официальной поддержки. Особенно реальным это становится сегодня, с возможностями генеративного ИИ. Для меня это оказался интересный опыт, на генерацию логики понадобилось около двух тысяч токенов и 3 дня, а на отладку и тесты — еще столько же.
А какими решениями вы пользуетесь для доступа к файлам на удаленных машинах? Делитесь в комментариях!
KioskNews shows a cleaned-up reading view extracted from the publisher’s page — the original always lives on their site, not ours.