1: Установка Mosquitto
Пакет mosquitto доступен в репозитории EPEL (Extra Packages for Enterprise Linux).
Устанавливаем epel-release от администратора.
sudo yum -y install epel-release
Опция –y автоматически подтверждает запросы. Теперь можно установить пакет mosquitto.
sudo yum -y install mosquitto
Запускаем mosquitto:
sudo systemctl start mosquitto
Добавляем автозапуск:
sudo systemctl enable mosquitto
Проверяем работу mosquitto
Открываем ещё одну сессию терминала, в результате у вас должно быть два терминала. Запускаем в новом терминале команду mosquitto_sub:
mosquitto_sub -h localhost -t test
Флаг –h указывает имя хоста сервера MQTT, -t – тему. После запуска команды на экране не появится вывода, поскольку команда mosquitto_sub ждет получения сообщений. Вернитесь в первый терминал и опубликуйте сообщение:
mosquitto_pub -h localhost -t test -m "hello world"
Команда mosquitto_pub использует те же опции, что и mosquitto_sub, однако в этот раз используется дополнительный флаг –m (он позволяет ввести текст сообщения). Нажмите Enter, и вы увидите в другом терминале MQTT-сообщение hello world.
Для того, чтобы остановить выполнения команды нажмите CTRL+C.
Настройка пароля MQTT
С помощью утилиты mosquitto_passwd генерируем файла паролей. Эта команда предложит ввести пароль для указанного пользователя и поместит результат в /etc/mosquitto/passwd.
sudo mosquitto_passwd -c /etc/mosquitto/passwd USERNAME
Удалите файл mosquitto.conf.
sudo rm /etc/mosquitto/mosquitto.conf
Создайте новый конфигурационный файл Mosquitto и добавьте в него информацию о новом файле паролей.
sudo nano /etc/mosquitto/mosquitto.conf
Вставьте в файл:
allow_anonymous false
password_file /etc/mosquitto/passwd
Строка allow_anonymous false блокирует доступ анонимных пользователей. Строка password_file указывает путь к файлу паролей. Сохраните и закройте файл.
Перезапустите Mosquitto:
sudo systemctl restart mosquitto
Тестируем новые настройки. Для теста отправьте сообщение без пароля:
mosquitto_pub -h localhost -t "test" -m "hello world"
Вы получите ошибку:
Connection Refused: not authorised.
Error: The connection was refused.
Перейдите во второй терминал и подпишитесь на тему test.
mosquitto_sub -h localhost -t test -u "USERNAME" -P "PASSWORD
"
Вернитесь в первый терминал и опубликуйте сообщение:
mosquitto_pub -h localhost -t "test" -m "hello world" -u
"USERNAME" -P "PASSWORD"
Сообщение появиться во втором терминале. Настройка Mosquitto прошла успешно.
Для шифрования паролей необходимо использовать SSL-шифрования.