Из любого SSH-клиента можно установить канал с сервером и управлять им стандартными командами в консоли. Есть такие клиенты и для смартфона. Многие знают и используют консоль Termux под Android, которая запускает с телефона стандартный OpenSSH.
Но есть варианты ещё удобнее, даже с графическим интерфейсом.
Вышеупомянутый Termux под Android подключается к серверу, используя стандартные инструменты Linux, а именно OpenSSH.
Termux желательно скачивать прямо с Github или из каталога F-Droid. Дело в том, что экспериментальная версия в каталоге Google Play Store ограничена по функциональности, чтобы соответствовать строгим правилам Google.
Предположим, мы зарегистрировали на RUVDS самый дешёвый сервер за 130 рублей в месяц:
В Termux предварительно нужно установить SSH-клиент Dropbear или OpenSSH (
pkg install openssh
) и обновить пакеты Termux командой pkg upgrade
. После этого можно подключаться к своему серверу по указанному IP-адресу 194.87.74.39, как на правом скриншоте внизу.ssh root@194.87.74.39
Есть и другие программы для управления сервером из консоли со смартфона. Например, можно попробовать Swell.sh — веб-терминал, специально спроектированный для использования в браузере на мобильном телефоне. Из функций: автодополнение Bash, поддержка жестов при наборе с клавиатуры:
Архитектура веб-терминала:
+-------------+ +--------------+ +--------------+ | | | | | | | | WebSocket | | spawn | Bash process | | Client Side +-------------> Server Side +---------->+ | | <-------------+ | | | | Browser | | Python | pty | | | | | +-----------> | | Chrome / | | API & WS <-----------+ | | Safari | | | | | | | | Static File | ptrace | | | | | +-----------> | | | | | | | +-------------+ +--------------+ +--------------+
Как мы уже говорили, подключиться к удалённой системе можно из любого мобильного SSH-клиента, чтобы быстро зайти на сервер и решить какие-то проблемы на ходу, когда нет доступа к персональному компьютеру. Или просто когда не хочется вылезать из кровати посреди ночи. Swell.sh просто удобнее стандартного Termux в этом отношении, потому что изначально проектировался для этой задачи. Кстати, его можно подключить к Termux как внешний фронтенд.
На сервере нужно установить следующее:
- bash, он идёт в комплекте с большинством дистрибутивов Linux;
- python 3.6+, virtualenv, pip, git;
- пакет
bash-completion
(желательно установить, он нужен для автодополнения);
- настройку
ptrace_scope
установить в значение 0/1, это настройка безопасности в Linux.
Затем установка Swell.sh:
git clone https://github.com/wcchoi/swell.sh
cd swell.sh
virtualenv -p python3 venv
source venv/bin/activate
pip install -r requirements.txt
Запуск:
cd swell.sh
source venv/bin/activate
python app.py # default options: --host=127.0.0.1 --port=8010
В браузере Chrome под Android/iOS набираем
<HOST>:<PORT>
(вообще, для безопасности не рекомендуется оголять сервер для открытого доступа, лучше спрятать его за VPN с перенаправлением портов или хотя бы за обратный прокси (например, Nginx, Apache, Caddy) с HTTPS и базовой аутентификацией).Что касается Termux, то его можно настроить на свой вкус, выбрав любимую консоль, будь то Bash, fish, Zsh или nano. Также можно установить редактор Emacs или Vim.
Termux — очень функциональная и удобная программа, которая приносит на смартфон всю мощь Linux, в том числе синхронизацию файлов и контактов через rsync, скачивание контента с помощью curl, установку любых пакетов Debian и Ubuntu из пакетного менеджера APT, привычную консоль Python, поддержку внешней клавиатуры/мыши по Bluetooth и многое другое.
▍ Управление из GUI
Кроме стандартных консольных программ на смартфоне можно установить и специализированные приложения с красивым GUI. Например, приложение RebootX изначально предназначено только для одной задачи: управление сервером.
Приложение работает с публичными облачными провайдерами (Amazon Web Services (AWS), Microsoft Azure, Clever Cloud, Google Cloud (GCP), OVH, Scaleway), инструментальными панелями (Grafana), а также серверами на собственном хостинге или в дата-центре. Причём инстансами у всех провайдеров можно управлять одновременно.
В последней версии в качестве эксперимента конкретно для AWS реализовали новую функцию Provision a service, которая позволяет в удалённом режиме установить на сервер Motomo, PrestoShop или WordPress:
Функция чем-то напоминает маркетплейс RUVDS, где клиент сразу получает инстанс с установленной ОС и настроенным программным обеспечением, готовым к работе (например, WordPress, интернет-магазин или персональный неотслеживаемый VPN).
Единственный минус, что программа не опенсорсная и назойливо предлагает обновиться на платную версию Pro с расширенными функциями (полный доступ к провайдерам, неограниченное количество серверов, установка туннелей SSH с консолью, как мы самостоятельно делали выше, неограниченное количество панелей инструментов и др.).
На видео показана запись командных макросов SSH, в том числе для перезагрузки веб-сервера nginx на удалённой машине:
Командные макросы SSH — это самая удобная вещь, особенно если установить макрос как ярлык на рабочем столе iOS.
В бесплатной версии RebootX количество функций урезано, например, из облачных провайдеров поддерживаются только два.
В конце концов, нужно упомянуть старые и хорошо известные инструменты для веб-администрирования сервера, такие как Webmin. Многие из них отлично работают и на смартфоне через мобильный браузер.
Например, тот же Webmin устанавливается за пару секунд двумя командами.
Установка репозитория:
curl -o setup-repos.sh https://raw.githubusercontent.com/webmin/webmin/master/setup-repos.sh
sh setup-repos.sh
Установка серверной части с настройками по умолчанию:
apt-get install webmin --install-recommends
Затем просто заходим в админку по адресу
194.87.74.39:10000
из любого браузера, в том числе со смартфона:▍ Серверные спецификации
RebootX On-Prem — это открытые серверные спецификации для управления серверами и панелями инструментов в приложении RebootX. Они совместимы с OpenAPI Specification, чтобы обеспечить совместимость с существующими программами.
Спецификации вводят два ключевых термина:
- Запускаемый объект (Runnable) — это всё, что работает, может быть остановлено и перезагружено. Например, виртуальные машины (VM), выделенные серверы, контейнеры, PaaS-приложения, базы данных — валидные примеры запускаемого объекта.
- Панель (Dashboard) — набор числовых показателей. Например, количество узлов, количество заказов, задержка — всё это допустимые метрики для панели инструментов.
Конкретно эти спецификации используются в приложении RebootX. Их можно применять также для доступа к метрикам (панели), если вам не хочется поднимать сложные и тяжеловесные инструменты вроде Grafana.
На практике эти спецификации нужны, если мы хотим установить управление над собственным сервером в локальной сети или на хостинге.
В этом случае есть выбор: создать собственный сервер с произвольной конфигурацией или использовать существующий, с уже готовыми настройками для запускаемого объекта и панели инструментов. Последние версии программного обеспечения HTTP Server Go для серверной части можно собрать из исходников или скачать с этой страницы.
Например, сервер можно загрузить локально в SwaggerUI с помощью Docker Compose:
# Generate swagger.json (optional since it's already present in the repository)
docker run --rm -v $(pwd):/app oven/bun run /app/spec/generate-swagger.ts
yarn lint
# Generate Go code with OpenAPI Generator
(cd impl/http-server-go && go mod vendor)
docker run --rm \
-v $(pwd):/app \
openapitools/openapi-generator-cli:v7.4.0 generate \
-i /app/spec/_generated/swagger.json \
-g go \
-o /app/impl/http-server-go/vendor/openapi
# Run Swagger UI calling the http-server-go (see below for more details)
docker-compose up
В зависимости от необходимости, сервер работает в двух режимах:
- Запускаемые объекты. В первом варианте (по умолчанию) сервер считывает запускаемые объекты из JSON-файла (пример JSON-файла). Во втором варианте в качестве запускаемого объекта принимается сам хост, так что программа получает полный контроль над ним с предоставлением клиенту полного удалённого доступа, включая syscall и exec. Это позволяет остановить или перезагрузить сервер.
- Панели. Сервер считывает панели из JSON-файла (пример JSON-файла).
Поведение по умолчанию можно изменить путём редактирования переменных в файлах
docker-compose.yml
или config.go
.В целом, эти спецификации используются для управления собственным сервером (on-prem) с помощью программы RebootX.
RebootX не даёт дополнительных возможностей по сравнению с консольным доступом на смартфоне, разве что делает управление чуть более удобным. Например, макросы SSH можно запускать одним нажатием кнопки, а с одного экрана подключаться к нескольким инстансам у разных провайдеров. Но в целом всё то же самое можно делать с обычной консоли Termux или Swell.sh.
Telegram-канал со скидками, розыгрышами призов и новостями IT 💻