Смена пароля MQTT

Добрый день!
Прошу помощи. Проблема с паролем на Mosquitto. Знаю точно что стоит). Поставил давненько по какой-то инструкции, точно не по этой Установка пароля на MQTT брокер потому что в соответствующих файлах нет записей. Но, это пункт сделан
Далее в файле /etc/mosquitto/conf.d/10listeners.conf установите параметр allow_anonymous false (по умолчанию true).
Так вот, хочу поменять логин и пароль, и не могу найти конфигурацию файла с паролем. Проверил все файлы и линки на файлы в папке /etc/mosquitto/. Не подскажите где могут быть эти файлы или как поменять логин и пароль? Спасибо!

Добрый день.

Покажите полностью содержимое данного файла.

Обычно это /etc/mosquitto/passwd/default.conf. В нём хранится список пользователей и их хэшированные пароли, разделенные двоеточием.
Удалить пользователя можно командой:

mosquitto_passwd -D /etc/mosquitto/passwd/default.conf username

Так же не забываете перезапускать mosquitto, чтобы изменения вступили в силу?

systemctl restart mosquitto
1 лайк

Спасибо за ответ!

В том то и дело. Я по файлам и по линкам там везде полазил и пооткрывал все что находится в папке Mosquitto.
Вот содержимое этого файла: /etc/mosquitto/conf.d/10listeners.conf

#change 0.0.0.0 to to limit listener to localhost

listener 1883 0.0.0.0

# example:
#listener 1883 0.0.0.0

#change 0.0.0.0 to 127.0.0.1 to limit listener to localhost

listener 18883 0.0.0.0
protocol websockets

Такой папки нет. А есть файл passwd.conf, он находится в корне папки /etc/mosquitto и он пустой

Соответсвенно, если нет папки и файла, то команда не удалит юзера…Вот в этом и вопрос был. Типа, как найти файл, место, папку, куда отправлять команду. А вообще пароль то стоит. Я через MQTT Explorer соединяюсь с mosquitto брокером на WB6 ( IP:порт, username, password) и смотрю топики.

Не, ну это понятно, я еще стопаю watchdog
Спасибо заранее

Возможно вы когда-то ставили и снимали пароль на веб-интерфейс, в следствии чего привели файл к данному виду.

/etc/mosquitto/passwd/ — симлинк на /mnt/data/etc/mosquitto/passwd
Попробуйте посмотреть файл здесь. Если его нет, то попробуйте сделать следующее:

Создайте симлинк на passwd если его нет:

ln -s /mnt/data/etc/mosquitto/passwd /etc/mosquitto/passwd

Создайте пустой файл если его нет:

touch /etc/mosquitto/passwd/default.conf

Приведите файл /etc/mosquitto/conf.d/10listeners.conf к виду:

listener 1883
allow_anonymous true
acl_file /etc/mosquitto/acl/default.conf
password_file /etc/mosquitto/passwd/default.conf

listener 18883
protocol websockets
allow_anonymous true
acl_file /etc/mosquitto/acl/default.conf
password_file /etc/mosquitto/passwd/default.conf

Приведите файл /etc/mosquitto/acl/default.conf к виду:

topic readwrite #
topic readwrite $SYS/#

Перезапустите mosquitto:

systemctl restart mosquitto

Далее попробуйте снова поставить пароль по инструкции. Отпишитесь о результате.

1 лайк

Я там писал что искал везде, ну и по этому пути тоже. Каталога нет…

Я так понимаю, что нужно сначала создать каталог, потом файл, а потом линк. Сделал

Нет ни каталога ни файла такого
/etc/mosquitto/acl/default.conf

Есть просто файл
/etc/mosquitto/acl.conf
он был пустой. я его изменил с вашими рекомендациями

Привел, перегрузил москито. Не поднялся. Ошибки.
Job for mosquitto.service failed because the control process exited with error code.
See “systemctl status mosquitto.service” and “journalctl -xe” for details.

Я так понимаю, что у меня с вами разные москито…Ну, конфиг каталоги точно разные.
Так как нет такого каталога
acl_file /etc/mosquitto/acl/default.conf
То просто изменил acl/default.conf НА acl.conf. Все равно ошибки запуска. Как оказалось эти настройки есть в файле
/etc/mosquitto/conf.d/auth.conf

Содержание файла
acl_file /etc/mosquitto/acl.conf
password_file /etc/mosquitto/passwd.conf

allow_anonymous true
allow_anonymous_localhost true

Попробовал закоментировать эти сторчки в этом файле. Все равно москито не поднялся. В итоге, в файле /etc/mosquitto/conf.d/10listeners.conf закоментировал конфликутющие стоки и москито завелся))) Через MQTT Explorer заходит уже без пароля.

Тогда следующий вопрос. Правильно ли я сделал, не будет ли это мешать работе брокера в дальнейшем?
Пароль поставил по инструкции. Работает
Спасибо!

Изминение/дополнение
После этих всех изминений заметил что очень долго перегружается москито

Что-то я совсем запутался в этих паролях. Ставлю пароль по инструкции заходит через MQTT Explorer с настройками логин и пароль, НО, на WEB интерфейсе нет устройств. Захожу в Настройки/Веб-интерфейс устанавливаю настроенные параметры - заходит в устройства, но нет Домашней страницы, нет Виджетов, нет вкладки Панели, нет Конфигурационных файлов.
Потом, для проверки, как только сношу юзера в файле acl.conf и соответственно в Настройки/Веб-интерфейс все работает. все на месте…Но, в MQTT Explorer не возможно без юзера/пароля. До этого как-то был ( root/wirenboard) но, в Настройки/Веб-интерфейс было пусто. Сейчас пробую поставить тот который был (root/wirenboard) с ним не пускает. Только пустые поля…но так не сохраняет настройки.
Сейчас оставил без пароля. москито перегружается так же как и было ДО манипуляций…но с ExplorerОМ так и не получилось

Как вернуть все в зад, и вообще в этом разобраться? Спасибо

Привести конфигурационные файлы в дефолтное состояние. Для понимания, основной конфигурационный файл — mosquitto.conf. Он находится в /etc/mosquitto. В нем с помощью параметра include_dir определяются каталоги с внешними конфигурационными файлами, в том числе файл со слушателями, определяемые параметром listener.
Параметр allow_anonymous определяет — разрешено ли подключаться клиентам, которые подключаются без указания имени пользователя (true) или нет (false).
В acl_file указывается путь к файлу со списком управления доступом. Все что указано после user <username> — будет применимо только для указанного пользователя, а всё что до этой строки или при её отсутствии — для всех клиентов при условии что allow_anonymous true.
Параметром password_file указывается путь к файлу паролей. Если параметр allow_anonymous false, то подключиться смогут только пользователи, определенные в этом файле.

Более подробно все параметры описаны здесь — mosquitto.conf man page | Eclipse Mosquitto

1 лайк

Хочу объяснить что к чему еще раз. Разобраться не самом протоколе MQTT, а в том как оно работает у меня на контроллере и почему именно так. А тут как раз поможете только Вы, потому что контроллер ваш и Вы лучше за всех знаете как оно настроено и как оно должно работать. ( согласно с ТД MQTT)

Так в том то и оно. Я в итоге привел все к тому как было, но…теперь MQTT Explorer коннектится без пароля. Пароль нужен. Раньше был root/wirenboard. При этом во вкладке Веб-интерфейса поля были пустыми. Я внес изменения в файлы по вашей рекомендации и в итоге…Explorer c паролем, Веб-интерфейс почему-то с паролем, (если не вносишь пароль - не отображаются устройства ) если вносиш то устройства есть а нет Домашней страницы, нет Виджетов, нет вкладки Панели, нет Конфигурационных файлов. Именно в этом хотел бы разобраться. Как настроить так чтобы при пароле все работало как нужно, а не как я описал.

Вообще это все для того чтобы связать MQTT мостом контроллер WB6 с HomeAsst. Ну и чтобы позволяло при создании настроек подставлять какойто пароль а не оставлять поле пустым, потому как не сохраняет . Это еще одна не тривиальная задача…Если поможете с этим то вопрос о пароле отпадает!))
Спасибо

Ну настройка в общем, не специфична для контроллера. Работать будет именно так, как настроены параметры в конфигурационных файлах.

Покажите полностью содержимое всех конфигурационных файлов.
После установки пароля в веб-интерфейсе не забываете менять права доступа на “Администратор”?

1 лайк

Это да

Как я писал выше, привел к первому виду. Удалил папки, которые создал, и настройки в файлах поудалял или изменил. Сейчас все вот так. Пароля нет, Explorer коннектится с произвольным паролем(только не пустым), все вкладки и настройки в Веб-интерфейсе есть.

1 /etc/mosquitto/conf.d/auth.conf
acl_file /etc/mosquitto/acl.conf
password_file /etc/mosquitto/passwd.conf

allow_anonymous true
allow_anonymous_localhost true

2 /etc/mosquitto/conf.d/auth.conf пустой

3 /etc/mosquitto/mosquitto.conf
# Place your local configuration in /etc/mosquitto/conf.d/
#
# A full description of the configuration file is at
# /usr/share/doc/mosquitto/examples/mosquitto.conf.example

pid_file /var/run/mosquitto.pid

persistence true
persistence_location /var/lib/mosquitto/

log_dest file /var/log/mosquitto/mosquitto.log

include_dir /etc/mosquitto/conf.d

4 /etc/mosquitto/passwd.conf пустой

5 /etc/mosquitto/conf.d/bridge.conf
#see bridge.conf.example for the example
connection WB6
address 192.168.0.100:1883
notifications true
notification_topic /WB6/bridge_status
keepalive_interval 20
restart_timeout 20
try_private true
remote_username <ЛОГИН_НА_Mosquitto_на_HA>
remote_password <ПАРОЛЬ_НА_Mosquitto_на_HA>
bridge_attempt_unsubscribe true
cleansession true
start_type automatic
allow_anonymous true
topic # out 0 devices/ WirenBoard6/

6 /etc/mosquitto/conf.d/listeners.conf закоментированные строчки с настройки по вашей рекомендации
#change 0.0.0.0 to to limit listener to localhost

listener 1883 0.0.0.0

#allow_anonymous true
#acl_file /etc/mosquitto/acl.conf
#password_file /etc/mosquitto/passwd/default.conf

listener 18883 0.0.0.0
protocol websockets

#allow_anonymous true
#acl_file /etc/mosquitto/acl.conf
#password_file /etc/mosquitto/passwd/default.conf

Вродь все. Как писал выше, как только ставлю пароль вашим способом, начинаются танцы с бубном)
P.S. если что, мост не работает…вот для этого все и затеваю

Не понятно, один и тот же файл?

Покажите ещё файл /etc/mosquitto/acl.conf

1 лайк

Извиняюсь

/etc/mosquitto/acl.conf пустой

Попробуйте теперь при текущей конфигурации поставить пароль следующим образом.

Добавьте нового пользователя и укажите пароль, выполнив команду:

mosquitto_passwd -c /etc/mosquitto/passwd.conf username

В файле /etc/mosquitto/conf.d/auth.conf измените параметр allow_anonymous true на allow_anonymous false

Из файла /etc/mosquitto/conf.d/bridge.conf удалите allow_anonymous true

В файл /etc/mosquitto/acl.conf добавьте:

user username
topic readwrite #
topic readwrite $SYS/#

Перезапустите mosquitto:

systemctl restart mosquitto

Попробуйте подключиться через MQTT Explorer используя логин “username” и установленный пароль. Так же в настройках веб-интерфейса установите логин и пароль и не забудьте поменять права доступа. Сообщите о результате.

1 лайк

Значится так)
Сделал все по инструкции…результат
Веб-интерфейс контроллера http://192.168.0.11
Домашняя страница - не отображается
****Панели
****Список -
****Default Dashboard - Не отображается. при добавлении ошибка(Ошибка загрузки списка сеансов и сервисов: убедитесь, что сервис wb-mqtt-logs установлен и работает корректно)
Устройства - отображаются, но НЕ управляются(вкл/выкл зумер, реле,) и НЕ обновляются данные( температура, вольтаж и т.д)
Виджеты - не создано ни одного виджета(но то такое)
История - загрузить не может
Правила - крутит постояно индикатор загрузки чего-то там( кружочек с шариков)
Настройки -
****Конфигурационные файлы - Не отображается, крутит постояно индикатор загрузки чего-то там( кружочек с шариков)
****Веб-интерфейс - ну вот это работает. тут можно поставить логин/пароль. Поставил тот, который установил командой из списка
****Система - Не отображается, крутит постояно индикатор загрузки чего-то там( кружочек с шариков)
****Каналы MQTT - пусто
****Права доступа - отображается, меняется
****Системный журнал - Не отображается, крутит постояно индикатор загрузки чего-то там( кружочек с шариков)
Помощь - вродь есть

MQTT Explorer заходит на 192.168.0.11 но ни один топик не активный
Команда 
mosquitto_sub -h 192.168.0.11 -u "ЮЗЕР" -P "ПАРОЛЬ" -t '/devices/wb-adc/controls/5Vout'
ничего не дает. 

Вот в этом то и вопрос…вроде пароль поставить можно, а не получается. Я там ваши инструкции на сайте читаю, и доступно написано, но есть одно НО…

Не получается воспроизвести, к сожалению. Возможно вам будет лучше обновиться, поскольку судя по всему у вас старая версия mosquitto. А инструкция действительна для версии mosquitto из актуальной версии ПО.

1 лайк

Остановится не могу))…нужно же как-то соединить WB6 с HomeAsst. Если старая версия, то, ее же можно обновить. Есть ли команды для этого?

Просто соединить WB6 с HomeAsst у меня получилось. Если в интеграции MQTT на НА указать сервер WB6, то топики залетают. все видно. НО, в таком случае я не вижу топики с ZigBee2mqtt, а у меня там куча устройств. Вот и хотел связать два брокера, чтобы топики с WB6 прилетали на москито на НА по мосту, а интеграция MQTT их там все подряд забирала и интегрировала в систему НА.

А вообще то, если посоветуете как настроить мост между двумя брокерами, то, может и не нужно предпринимать другие шаги. Или…вы тут сказали что версия старая, может из-за этого мост не поднимается как нужно? Потому что я уже перечитал пол инета, все советуют приблизительно так как у вас в этой инструкции Может вам выслать логи там какие-то, чтобы вы глянули?

Может еще и обновиться до wb-2401?, Потому что у меня сейчас wb-2207

Спасибо

Да, желательно. Инструкция есть в документации — Обновление прошивки контроллеров Wiren Board 6.x — Wiren Board

В инструкции написано для актуальной версии, поэтому лучше обновиться.
Проверил у себя (wb-2401, mosquitto 2.0.11).
Добавил в /etc/mosquitto/conf.d/20bridges.conf:

connection homeassistant
address 192.168.0.141:1883
remote_username admin
remote_password password
try_private true
start_type automatic
topic # both

При этом в MQTT explorer вижу топики HA:

image

И наоборот:

1 лайк