Mosquitto 配置登录
原文:https://mosquitto.org/documentation/authentication-methods/
身份验证方法
在 Mosquitto 实例上配置身份验证非常重要,因此未经授权的客户端无法连接。
在 Mosquitto 2.0 及更高版本中,您必须明确选择身份验证选项,然后客户端才能连接。在早期版本中,默认设置是允许客户端无需身份验证即可连接。
改来改去好烦人,直接允许匿名登录怎么就不好了,新手为什么要来修改配置文件,烦人。
身份验证有三种选择:密码文件、身份验证插件和未经授权/匿名访问。可以使用所有三个选项的组合。
per_listener_settings true
通过在配置文件中进行设置,可以让不同的侦听器使用不同的身份验证方法。
除了身份验证之外,您还应该考虑某种形式的访问控制来确定哪些客户端可以访问哪些主题。
未经身份验证的访问
要配置未经身份验证的访问,请使用以下 allow_anonymous
选项:
listener 1883
allow_anonymous true
允许对同一代理进行匿名和经过身份验证的访问是有效的。特别是动态安全插件允许您为匿名用户分配与经过身份验证的用户不同的权限,这对于例如对数据的只读访问可能很有用。
💦 默认不允许匿名登录:一开始是默认匿名登录的,后来改成默认不允许,呵呵。
💦 默认的 1883 端口:原来是不用写的,因为 mqtt 协议建议的就是 1883,然后 mosquitto 默认有了,现在要手动写上。
感觉应该这样
🟢 允许匿名登录
🟢 配置 tcp 的 1883 端口
🟢 配置 ws 的 9001 端口
allow_anonymous true
listener 1883
protocol mqtt
listener 9001
protocol websockets
密码文件
密码文件是一种将用户名和密码存储在单个文件中的简单机制。如果您拥有相对较少数量的相当静态的用户,它们就很好。
如果您更改密码文件,您必须通过发送 SIGHUP 消息触发代理重新加载文件:
kill -HUP <process id of mosquitto>
这句就是杀死 mosquitto 进程,一般不用。
可以直接重启服务systemctl restart mosquitto
创建密码文件
要创建密码文件,请使用 mosquitto_passwd
实用程序,使用下面的行。您将被要求输入密码。请注意,这 -c
意味着现有文件将被覆盖:
mosquitto_passwd -c <password file> <username>
要将更多用户添加到现有密码文件,或更改现有用户的密码,请省略 -c
参数:
mosquitto_passwd <password file> <username>
要从密码文件中删除用户:
mosquitto_passwd -D <password file> <username>
您还可以在一行中添加/更新用户名和密码,但请注意,这意味着密码在命令行和任何命令历史记录中都是可见的:
mosquitto_passwd <password file> <username> <password>
操作
添加用户名:ioufev
mosquitto_passwd -c /etc/mosquitto/password_file ioufev
输入密码
修改配置文件
# allow_anonymous true
listener 1883
protocol mqtt
listener 9001
protocol websockets
password_file /etc/mosquitto/password_file
重启服务
systemctl restart mosquitto
查看服务状态呢
systemctl status mosquitto
配置代理
要开始使用您的密码文件,您必须将 password_file
选项添加到您的配置文件中:
password_file <path to the configuration file>
密码文件必须能够被任何运行 Mosquitto 的用户读取。在 Linux/POSIX 系统上,这通常是 mosquitto
用户,并且 /etc/mosquitto/password_file
是文件本身的好地方。
如果您使用为 per_listener_settings true
每个侦听器设置单独的安全设置的选项,则必须将密码文件选项放在侦听器之后 :
listener 1883
password_file /etc/mosquitto/password_file
多端口机制就是用好啊
测试不成功,不好用是有原因的,配置这么多,连个 WebUI 都没有。
身份验证插件
如果您希望对用户身份验证进行比密码文件提供的更多控制,那么身份验证插件可能适合您。提供的功能取决于您使用的插件。
配置插件
配置插件取决于插件所针对的 Mosquitto 插件接口的版本,无论是 2.0 及更高版本,还是 1.6.x 及更早版本。
对于 1.6.x 及更低版本,请使用该 auth_plugin
选项。2.0 版也支持这些插件:
listener 1883
auth_plugin <path to plugin>
一些插件需要额外的配置,这将在他们的文档中描述。
对于 2.0 及更高版本,请使用以下plugin
选项:
listener 1883
plugin <path to plugin>
可用插件
🟢 Dynamic security,仅适用于 2.0 及更高版本,由 Mosquitto 项目提供,以提供可以远程管理的灵活的代理客户、组和角色。
🟢 mosquitto-go-auth,它提供使用各种后端来存储用户数据,例如 mysql、jwt 或 redis。