GeekHub

Mosquitto身份验证配置

参考:

MQTT服务器搭建–Mosquitto用户名密码配置

服务器端:

在MQTT服务器端修改Mosquitto配置文件:

sudo vim /etc/mosquitto/mosquitto.conf

在其中添加:

allow_anonymous false  #禁止匿名访问
password_file /etc/mosquitto/pwfile  #指定身份验证文件,必须为全局路径
#acl_file /etc/mosquitto/acl  #指定每个账户的话题访问权及发送权等,由于我不需要,故在此注释,如需配置,具体使用可参考文章开头的链接

然后在服务器上生成身份验证文件:

mosquitto_passwd -c /etc/mosquitto/pwfile username

其中username为你要设置的用户名,终端会提示你输入两次相同的密码设置用户名密码(注意,亲测密码输错后按删除键无效,只能重新运行本条命令进行设置)

上面的命令中的-c参数代表操作会覆盖原有文件中的用户信息(如果有的话),如果需要额外添加用户和密码,可以使用:

mosquitto_passwd -b /etc/mosquitto/pwfile username password

注意上述命令使用明文输入密码存在风险。

关于mosquitto_passwd的更多使用方法可参考:mosquitto_passwd man page

客户端:

在服务器端设置好之后,这个时候可以在客户端使用

mosquitto_sub -h your_mqtt_server_ip -t your_topic

进行验证,可以发现终端会提示:

Connection error: Connection Refused: not authorised.

尝试使用

mosquitto_sub -h your_mqtt_server_ip -t your_topic -u username -P "password"

其中-u参数后接在服务器上设置的mosquitto用户名,-P参数后接为该用户名设置的密码,可以发现加上上述参数后可以正常订阅话题。

在mosquitto cpp库中,可以使用mosquittopp类的成员函数

int DEPRECATED username_pw_set(const char *username, const char *password=NULL);

配置用户名和密码,该函数需要在使用connect函数或connect_async函数前进行调用。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注