
Со временем у меня появилось несколько серверов: VPS, домашний NAS и ещё пара машин под разные задачи. Для подключения я использовал PuTTY. Он работает, но управлять несколькими серверами в нём неудобно. Сессии хранятся в реестре Windows, список хостов плоский, вкладок нет. Чтобы открыть два сервера, нужны два отдельных окна.
Termius устроен иначе. Там есть нормальный список хостов, вкладки и синхронизация. Но для работы нужен аккаунт, данные хранятся в облаке, а часть функций доступна только по подписке.
Мне не хотелось регистрироваться и загружать список своих серверов в облако ради обычного SSH‑подключения. Поэтому я начал делать собственный клиент — LucidSSH. Это не попытка собрать ещё один комбайн для системных администраторов. Мне нужен был простой локальный SSH‑клиент с несколькими дополнительными функциями: защитой от опасных команд и понятными объяснениями ошибок.
Я не занимаюсь администрированием каждый день. Поэтому делал программу прежде всего для таких же пользователей, как я: тех, кто впервые настраивает VPS, NAS, Raspberry Pi или небольшой домашний сервер. Разрабатываю LucidSSH в свободное от основной работы время.
Почему не PuTTY и не Termius
PuTTY надёжный и привычный. Но он ничего не объясняет и почти не помогает избежать ошибок. Termius, MobaXterm и SecureCRT дают гораздо больше возможностей: SFTP, туннели, макросы, синхронизацию профилей и другие инструменты. Это удобно, когда понимаешь, что тебе нужно и как всё работает. Новичку такой набор может только мешать. Особенно когда сервер уже перестал отвечать и нужно быстро понять, что произошло. LucidSSH находится где‑то между этими вариантами. В нём достаточно функций для обычной работы с сервером, но нет перегруженного интерфейса. Основу приложения составляют три функции.
Три основные функции
Страж опасных команд
Страж проверяет команду до того, как она уйдёт на сервер. Он реагирует на rm -rf, dd и другие команды, которые могут удалить данные или повредить систему. Для подтверждения недостаточно нажать кнопку. Нужно вручную ввести имя файла, каталога или устройства, с которым будет работать команда. Это медленнее обычного диалога с кнопкой «Продолжить». Но стандартные предупреждения быстро перестают замечать. Их подтверждают автоматически, не читая текст. Страж можно отключить полностью или только для конкретного хоста.
Офлайн‑детектор ошибок
Детектор работает локально. Без интернета и без LLM. Внутри приложения есть база распространённых ошибок SSH и shell с объяснениями на русском языке. Например:
-
Permission denied; -
Host key verification failed; -
Connection refused; -
ошибки, связанные с
nologin.
Объяснение появляется прямо под терминалом. Не нужно копировать ошибку и искать её значение в интернете.
Breadcrumb текущего каталога
Над терминалом находится строка с текущим путём. Она получает данные через интеграцию с shell, а не пытается угадать каталог по тексту приглашения. На любой сегмент пути можно нажать. После этого путь вставляется в командную строку. Функция небольшая, но полезная. Особенно когда открыто несколько вкладок и легко забыть, в каком каталоге сейчас находишься. Она же снижает вероятность выполнить опасную команду не в той папке.
Что уже есть
Все данные хранятся локально. Для использования LucidSSH не нужен аккаунт. В приложении нет облачной синхронизации и телеметрии. Пароли сохраняются через Windows Credential Manager. Приватные ключи не копируются во внутреннее хранилище приложения. Первая версия LucidSSH уже доступна.
В v1.0 нет:
-
SFTP;
-
объяснения ошибок через LLM;
-
Mosh;
-
Telnet;
-
RDP;
-
VNC.
Я сознательно оставил эти функции за пределами первой версии. Позже станет понятно, какие из них действительно нужны пользователям.
Цифровая подпись
Первая версия вышла без цифровой подписи. Поэтому при запуске Windows показывает предупреждение «Неизвестный издатель». Сертификат стоит денег, и на текущем этапе я не вижу смысла его покупать. Предупреждение не спрятано: я прямо указал это на странице загрузки и внутри приложения.
Репозиторий и лицензия
Репозиторий открыт: LucidSSH.
С лицензией я пока не определился. Этот вопрос ещё изучаю. Буду рад аргументированным советам от тех, кто уже выпускал собственные приложения с открытым исходным кодом.
Зачем я об этом пишу
LucidSSH начинался как программа для моих задач. Уже сейчас он закрывает большую часть того, для чего я его создавал. Но, скорее всего, я не единственный, кому нужен простой SSH‑клиент без обязательного аккаунта, облака и лишних функций. Поэтому я решил открыть проект и рассказать о нём здесь. Особенно интересны критика архитектуры, найденные проблемы и мнение людей, которые регулярно работают с SSH. Issues в репозитории тоже открыты.
ссылка на оригинал статьи https://habr.com/ru/articles/1064410/