mRemoteNG + MySQL

В нашей команде появилась необходимость организовать хранение и подключения в общую базу. Устали от ситуации, что каждый делает свой конфиг.

Будем делать общую базу на Centos 7 + MariaDB.

Хоть и запись получилась, как портянка, но в ней ничего сложного и трудного. Правда, пришлось повозиться, т.к. продукт ещё сыроватый, в документации встречаются косяки.

Подготовка Centos

Обновления и пару утилит

Вся статья делается на голом Centos’e и вся настройка производиться с 0. Поэтому нам надо подготовить сервер.

Начинаем с обновления системы.

Так же я сразу добавляю mc, уж очень мне нравится :)

Ещё я себе ставлю Nano т.к. просто привык к нему во времена учёбы.

 

Установка MariaDB

Для того, чтобы поставить последнею версию нам надо добавить официальный репозиторий. Переходим на сайт разработчика. Выбираем нужные параметры и получаем готовый код. Нам осталось только подключить репозиторий.

Создаем файл MariaDB.repo по пути /etc/yum.repos.d/

И вставляем в него код, который даёт нам разработчик.

У меня были какие-то проблемы с установкой версии 10.5, поэтому я поставить 10.4

Запускаем установку.

После установки запускаем и добавляем в автозагрузку

Проверяем, что всё стартануло.

Примерный вывод.

Дальше нам необходимо настроить базовую защиту. Выполняем команду:

  1.  Задать пароль для пользователя root (по умолчанию его нет)

  2. Удаляем анонимных пользователей

  3. Запрещаем удаленный вход под root’ом

  4. Удаляем тестовые таблицы

  5. Обновляем таблицу привилегий

     

После выполнения этих шагов должно выйти сообщение о том, всё прошло удачно.

И небольшой тюнинг работы MariaDB, взятая с просторов интернета, которая мне очень нравится. Также в этом конфиге исправлена проблема с кодировкой.

Кириллица превращалась в вопросительные знаки.

И приводим к виду

Перезапускаем MariaDB.

 

Установка PhpMyAdmin

Для удобства администрирования базы поставим phpmyadmin. Он не обязателен, всё можно сделать из консоли. Ну и, конечно, нам нужен веб-сервер, возьмём Apache и php поставим, куда без него? :)

Установим Apache

После установки включаем Apache

Переходим по адресу http://ip-адрес-сервера/. Примерная картинка:

 

Установим php

Перезапускаем Apache, чтобы он заработал с php.

Устанавливаем сам phpmyadmin

Сделаем бэкап оригинального конфига.

В стандартном конфиге подключения к phpmyadmin разрешены только с localhost или же 127.0.0.1, надо это поправить. Открываем конфиг и приводим к виду.

После этого перезапускаем Apache.

И пробуем зайти http://ip-адрес-сервера/phpmyadmin

Создание базы

Логинимся на phpmyadmin. Переходим в «Создать БД». Заполняем поля:

Имя: mRemoteNG

Кодировка: urf8_general_ci

Далее переходим в раздел SQL и копируем скрипт, который ниже.

Если всё прошло хорошо, вы увидите вот такой вывод.

Создание пользователя

База есть. Теперь нужен пользователь под которым будем логиниться на сервер. Переходим в раздел привилегии и создаём нового.

Заполняем поля. Имя, разрешенные IP с которых можно подключаться, пароль, привилегии.

Настройка подключения

Я всё настраивал под версию v1.77.0 portable. Переходим на страницу загрузки на сайте разработчика.

Распаковываем в любое место. И запускаем.

Переходим во вкладку инструменты.

Открываем SQL-Server, отмечаем чек бокс на «Использовать SQL-Server для загрузки и сохранения подключения». Заполняем данные от базы, которые мы настраивали на предыдущих шагах.

Проверяем подключение. Если всё хорошо — нажимаем «Да».

И первым делом, чтобы понять, что всё заработало корректно — надо создать первое подключение. Если что-то пойдет не так, то все проблемы будут высыпаться в левом нижнем углу на вкладке «Уведомления».

Безопасность

Что касается безопасности — тут, как и ожидалось, сыровато, но присутствует.

Если заглянуть в базу, то все пароли зашифрованы. Мы видим в базе лишь отпечатки.
Если попытаться сделать экспорт файла подключений и заглянуть в XML-файл — там тоже самое. Но везде видны логины, ip:порт и другая информация. То есть в базе шифруется лишь пароль.

Не лишним будет поставить на сам сервер поставить fail2ban, выключить phpmyadmin и настроить какой-нибудь FireWall.

Шифрование и пароль

На файл подключения можно поставить пароль. Тогда, даже если сделать экспорт и импорт файла в виде XML, то выдаст ошибку. Пароль можно поставить так:

И при входе мы будем видеть запрос на пароль:

Если после установки пароля попробовать выгрузить xml и загрузить обратно, то программа выдаст ошибку, что ей не прочитать файл.

Разграничение прав

Про разграничение прав и речи нет. Группа пользователей всегда одна: все всё видят. Так что, если стоит задача — одним дать доступы сюда, вторым только сюда, то это можно сделать только через MySQL. Либо создавать несколько баз. Других способов я не нашел.

Результат

Пришлось потратить немного времени и сил, чтобы это все заработало хотя бы в виде MVP. На данный момент мы у себя будем запускать это в боевую среду и активно использовать.

Траблшут

Везде отключен буфер обмена

По умолчанию для всех и вся проброс буфера обмена отключен. Если вы перенесили свой рабочий конфиг, то эти значения перепишет. Чтобы не ковыряться руками — зайдем в phpmyadmin, выбираем базу mRemoteNG, таблицу tblCons, делаем SQL-запрос:

 


Если мой материал был полезен, то можете угостить меня кофе ☕️


Подписаться
Уведомить о
guest
12 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
Алексей Багринцев
Алексей Багринцев
2 лет назад

Не работает.
———-
ErrorMsg
01/31/2023 16:55:34
Невозможно сохранить файл в качестве подключения «»!
Missing the DataColumn ‘DomainName’ for the SourceColumn ‘DomainName’.
———-

Алексей Багринцев
Алексей Багринцев
Ответить на  bite-byte
2 лет назад

Заработало.
Большое спасибо за статью, не знал, что прога умеет в сиквел!

По поводу косяков:

Версия mRemoteNG 1.77.3 NB

Я так понял, что они постоянно что-то пилят и каждая минорная версия имеет свою структуру БД.
Мне пришлось лазить в гитхаб для этой версии, искать начальный запрос для создания баз, редактировать кодировку со шведской на utf8.
Если у вас не будет работать, лазайте на гитхаб, сливайте код.
Ссылка: https://github.com/mRemoteNG/mRemoteNG/blob/v1.77.3-dev/mRemoteNGDocumentation/mysql_db_setup.sql

Рабочий SQL:

Спойлер

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE=’+00:00′ */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE=’NO_AUTO_VALUE_ON_ZERO’ */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
   

— Table structure for table tblCons

   
DROP TABLE IF EXISTS tblCons;
/*!40101 SET @saved_cs_client   = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE tblCons (
  ID int(11) NOT NULL AUTO_INCREMENT,
  ConstantID varchar(128) NOT NULL,
  PositionID int(11) NOT NULL,
  ParentID varchar(128) DEFAULT NULL,
  LastChange datetime NOT NULL,
  Name varchar(128) NOT NULL,
  Type varchar(32) NOT NULL,
  Expanded tinyint(1) NOT NULL,
  AutomaticResize tinyint(1) NOT NULL DEFAULT 1,
  CacheBitmaps tinyint(1) NOT NULL,
  Colors varchar(32) NOT NULL,
  ConnectToConsole tinyint(1) NOT NULL,
  Connected tinyint(1) NOT NULL,
  Description varchar(1024) DEFAULT NULL,
  DisableCursorBlinking tinyint(1) NOT NULL,
  DisableCursorShadow tinyint(1) NOT NULL,
  DisableFullWindowDrag tinyint(1) NOT NULL,
  DisableMenuAnimations tinyint(1) NOT NULL,
  DisplayThemes tinyint(1) NOT NULL,
  DisplayWallpaper tinyint(1) NOT NULL,
  Domain varchar(512) DEFAULT NULL,
  EnableDesktopComposition tinyint(1) NOT NULL,
  EnableFontSmoothing tinyint(1) NOT NULL,
  ExtApp varchar(256) DEFAULT NULL,
  Favorite tinyint(1) NOT NULL,
  Hostname varchar(512) DEFAULT NULL,
  LoadBalanceInfo varchar(1024) DEFAULT NULL,
  MacAddress varchar(32) DEFAULT NULL,
  OpeningCommand varchar(512) DEFAULT NULL,
  Panel varchar(128) NOT NULL,
  Password varchar(1024) DEFAULT NULL,
  Port int(11) NOT NULL,
  PostExtApp varchar(256) DEFAULT NULL,
  PreExtApp varchar(256) DEFAULT NULL,
  Protocol varchar(32) NOT NULL,
  PuttySession varchar(128) DEFAULT NULL,
  RDGatewayDomain varchar(512) DEFAULT NULL,
  RDGatewayHostname varchar(512) DEFAULT NULL,
  RDGatewayPassword varchar(1024) DEFAULT NULL,
  RDGatewayUsageMethod varchar(32) NOT NULL,
  RDGatewayUseConnectionCredentials varchar(32) NOT NULL,
  RDGatewayUsername varchar(512) DEFAULT NULL,
  RDPAlertIdleTimeout tinyint(1) NOT NULL,
  RDPAuthenticationLevel varchar(32) NOT NULL,
  RDPMinutesToIdleTimeout int(11) NOT NULL,
  RdpVersion varchar(10) DEFAULT NULL,
  RedirectAudioCapture tinyint(1) NOT NULL DEFAULT 0,
  RedirectClipboard tinyint(1) NOT NULL DEFAULT 0,
  RedirectDiskDrives tinyint(1) NOT NULL,
  RedirectKeys tinyint(1) NOT NULL,
  RedirectPorts tinyint(1) NOT NULL,
  RedirectPrinters tinyint(1) NOT NULL,
  RedirectSmartCards tinyint(1) NOT NULL,
  RedirectSound varchar(64) NOT NULL,
  RenderingEngine varchar(16) DEFAULT NULL,
  Resolution varchar(32) NOT NULL,
  SSHOptions varchar(1024) NOT NULL,
  SSHTunnelConnectionName varchar(128) NOT NULL,
  SoundQuality varchar(20) NOT NULL,
  UseCredSsp tinyint(1) NOT NULL,
  UseEnhancedMode tinyint(1) DEFAULT NULL,
  UseVmId tinyint(1) DEFAULT NULL,
  UserField varchar(256) DEFAULT NULL,
  Username varchar(512) DEFAULT NULL,
  VNCAuthMode varchar(10) DEFAULT NULL,
  VNCColors varchar(10) DEFAULT NULL,
  VNCCompression varchar(10) DEFAULT NULL,
  VNCEncoding varchar(20) DEFAULT NULL,
  VNCProxyIP varchar(128) DEFAULT NULL,
  VNCProxyPassword varchar(1024) DEFAULT NULL,
  VNCProxyPort int(11) DEFAULT NULL,
  VNCProxyType varchar(20) DEFAULT NULL,
  VNCProxyUsername varchar(512) DEFAULT NULL,
  VNCSmartSizeMode varchar(20) DEFAULT NULL,
  VNCViewOnly tinyint(1) NOT NULL,
  VmId varchar(512) DEFAULT NULL,
  ICAEncryptionStrength varchar(32) NOT NULL,
  Icon varchar(128) NOT NULL,
  InheritAutomaticResize tinyint(1) NOT NULL DEFAULT 0,
  InheritCacheBitmaps tinyint(1) NOT NULL,
  InheritColors tinyint(1) NOT NULL,
  InheritDescription tinyint(1) NOT NULL,
  InheritDisableCursorBlinking tinyint(1) NOT NULL,
  InheritDisableCursorShadow tinyint(1) NOT NULL,
  InheritDisableFullWindowDrag tinyint(1) NOT NULL,
  InheritDisableMenuAnimations tinyint(1) NOT NULL,
  InheritDisplayThemes tinyint(1) NOT NULL,
  InheritDisplayWallpaper tinyint(1) NOT NULL,
  InheritDomain tinyint(1) NOT NULL,
  InheritEnableDesktopComposition tinyint(1) NOT NULL,
  InheritEnableFontSmoothing tinyint(1) NOT NULL,
  InheritExtApp tinyint(1) NOT NULL,
  InheritFavorite tinyint(1) NOT NULL,
  InheritICAEncryptionStrength tinyint(1) NOT NULL,
  InheritIcon tinyint(1) NOT NULL,
  InheritLoadBalanceInfo tinyint(1) NOT NULL DEFAULT 0,
  InheritMacAddress tinyint(1) NOT NULL,
  InheritOpeningCommand tinyint(1) NOT NULL,
  InheritPanel tinyint(1) NOT NULL,
  InheritPassword tinyint(1) NOT NULL,
  InheritPort tinyint(1) NOT NULL,
  InheritPostExtApp tinyint(1) NOT NULL,
  InheritPreExtApp tinyint(1) NOT NULL,
  InheritProtocol tinyint(1) NOT NULL,
  InheritPuttySession tinyint(1) NOT NULL,
  InheritRDGatewayDomain tinyint(1) NOT NULL,
  InheritRDGatewayHostname tinyint(1) NOT NULL,
  InheritRDGatewayPassword tinyint(1) NOT NULL,
  InheritRDGatewayUsageMethod tinyint(1) NOT NULL,
  InheritRDGatewayUseConnectionCredentials tinyint(1) NOT NULL,
  InheritRDGatewayUsername tinyint(1) NOT NULL,
  InheritRDPAlertIdleTimeout tinyint(1) NOT NULL,
  InheritRDPAuthenticationLevel tinyint(1) NOT NULL,
  InheritRDPMinutesToIdleTimeout tinyint(1) NOT NULL,
  InheritRdpVersion tinyint(1) NOT NULL DEFAULT 0,
  InheritRedirectAudioCapture tinyint(1) NOT NULL DEFAULT 0,
  InheritRedirectClipboard tinyint(1) NOT NULL DEFAULT 0,
  InheritRedirectDiskDrives tinyint(1) NOT NULL,
  InheritRedirectKeys tinyint(1) NOT NULL,
  InheritRedirectPorts tinyint(1) NOT NULL,
  InheritRedirectPrinters tinyint(1) NOT NULL,
  InheritRedirectSmartCards tinyint(1) NOT NULL,
  InheritRedirectSound tinyint(1) NOT NULL,
  InheritRenderingEngine tinyint(1) NOT NULL,
  InheritResolution tinyint(1) NOT NULL,
  InheritSSHOptions tinyint(1) NOT NULL,
  InheritSSHTunnelConnectionName tinyint(1) NOT NULL,
  InheritSoundQuality tinyint(1) NOT NULL,
  InheritUseConsoleSession tinyint(1) NOT NULL,
  InheritUseCredSsp tinyint(1) NOT NULL,
  InheritUseRestrictedAdmin tinyint(1) NOT NULL,
  InheritUseRCG tinyint(1) NOT NULL,
  UseRestrictedAdmin tinyint(1) NOT NULL,
  UseRCG tinyint(1) NOT NULL,
  InheritUseEnhancedMode tinyint(1) DEFAULT NULL,
  InheritUseVmId tinyint(1) DEFAULT NULL,
  InheritUserField tinyint(1) NOT NULL,
  InheritUsername tinyint(1) NOT NULL,
  InheritVNCAuthMode tinyint(1) NOT NULL,
  InheritVNCColors tinyint(1) NOT NULL,
  InheritVNCCompression tinyint(1) NOT NULL,
  InheritVNCEncoding tinyint(1) NOT NULL,
  InheritVNCProxyIP tinyint(1) NOT NULL,
  InheritVNCProxyPassword tinyint(1) NOT NULL,
  InheritVNCProxyPort tinyint(1) NOT NULL,
  InheritVNCProxyType tinyint(1) NOT NULL,
  InheritVNCProxyUsername tinyint(1) NOT NULL,
  InheritVNCSmartSizeMode tinyint(1) NOT NULL,
  InheritVNCViewOnly tinyint(1) NOT NULL,
  InheritVmId tinyint(1) DEFAULT NULL,
  StartProgram varchar(512) DEFAULT NULL,
  StartProgramWorkDir varchar(512) DEFAULT NULL,
  PRIMARY KEY (ConstantID),
  UNIQUE (ID)
) ENGINE=InnoDB AUTO_INCREMENT=3324 DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;
   

— Table structure for table tblRoot

   
DROP TABLE IF EXISTS tblRoot;
/*!40101 SET @saved_cs_client   = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE tblRoot (
  Name varchar(2048) NOT NULL,
  Export tinyint(1) NOT NULL,
  Protected varchar(4048) NOT NULL,
  ConfVersion varchar(15) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;
   

— Table structure for table tblUpdate

   
DROP TABLE IF EXISTS tblUpdate;
/*!40101 SET @saved_cs_client   = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE tblUpdate (
  LastUpdate datetime(3) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;
   
   
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
   
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

Алексей Багринцев
Алексей Багринцев
Ответить на  bite-byte
2 лет назад

Теперь борюсь с другим косяком. Прога не запоминает конфигурацию, соответственно при старте не подключается к серваку.
Можете скинуть, что у вас написано в confCons.xml (бе з паролей, если они есть)?

Алексей Багринцев
Алексей Багринцев
Ответить на  bite-byte
2 лет назад

Изучил тему. Автор программы специально отключил сохранение настроек, чтобы народ не пользовался новой ночной сборкой, а юзал старые.

https://translated.turbopages.org/proxy_u/en-ru.ru.974160ce-63da2399-b09480ed-74722d776562/https/github.com/mRemoteNG/mRemoteNG/issues/2245

Старый вариант программы грустный, допилить да перекомпилить разве что…

Борис
Борис
1 год назад

Пробовали запускать v1.77.0 portable под mssql? у меня только 1.76 заработала.

hasper
hasper
24 дней назад

пользовался.. одно время данным софтом.. потом перешел на RDM принцип то же.. удобств да же в бесплатной версии на голову больше

Приглашение в телеграм! 💙


Приглашаю подписаться в Telegram
У меня там новости, маленькие рассказы и полезные ссылки.
Плюс так мы никогда не потеряемся!

👉 https://t.me/bitebyteru  👈

Он будет закрыт в 11 секунд