原文地址:https://www.cnblogs.com/NickQ/p/9277315.html

问题描述:

搭建好mosqitto环境后,利用无密码验证方式,成功通过测试。

但修改配置文件将匿名访问关闭,并设置密码文件

allow_anonymous false
password_file /home/nickxq/mqtt_passwd

密码文件内容:

参考:https://mosquitto.org/man/mosquitto-conf-5.html

[nickxq@centos6 ~]$ cat ./mqtt_passwd
nick:nickxq

开启服务器报错:

[nickxq@centos6 ~]$ mosquitto -c mosquitto.conf
1530947452: mosquitto version 1.4.15 (build date 2018-04-21 17:41:08+0800) starting
1530947452: Config loaded from mosquitto.conf.
1530947452: Error: Invalid password hash for user nick.
1530947452: Error opening password file "/home/nickxq/mqtt_passwd".

提示密码无效。

猜想可能是因为文件明文密码需要加密。

猜想依据:密码示例文件如此,示例文件内容:

[nick@XQLY ~]$ cat /etc/mosquitto/pwfile.example
roger:$6$clQ4Ocu312S0qWgl$Cv2wUxgEN73c6C6jlBkswqR4AkHsvDLWvtEXZZ8NpsBLgP1WAo/qA+WXcmEN/mjDNgdUwcxRAveqNMs2xUVQYA==
sub_client:$6$U+qg0/32F0g2Fh+n$fBPSkq/rfNyEQ/TkEjRgwGTTVBpvNhKSyGShovH9KHewsvJ731tD5Zx26IHhR5RYCICt0L9qBW0/KK31UkCliw==
pub_client:$6$vxQ89y+7WrsnL2yn$fSPMmEZn9TSrC8s/jaPmxJ9NijWpkP2e7bMJLz78JXR1vW2x8+T3FZ23byJA6xs5Mt+LeOybAHwcUv0OCl40rA==

于是通过linux中用户密码shadow文件,找到用户密码

nick:$6$.KqyKaCc$om0v0xipwvVJOubJjihzCGF7yII4CGZireXCGCj7WskvlDSDwv3qfDk.GWe2/IUO4tqn5XYFR8CpekZz7oLaG/:17718:0:99999:7:::

密文串意思参考:

http://blog.sina.com.cn/s/blog_4d1f40c00101cvd8.html

https://blog.csdn.net/jinyuhongye/article/details/7950961

得到nick用户,明文密码为nickxq的加密密文为:

$6$.KqyKaCc$om0v0xipwvVJOubJjihzCGF7yII4CGZireXCGCj7WskvlDSDwv3qfDk.GWe2/IUO4tqn5XYFR8CpekZz7oLaG/

将密文添加到 ./mqtt_passwd

[nickxq@centos6 ~]$ cat ./mqtt_passwd
nick:$6$.KqyKaCc$om0v0xipwvVJOubJjihzCGF7yII4CGZireXCGCj7WskvlDSDwv3qfDk.GWe2/IUO4tqn5XYFR8CpekZz7oLaG/

运行服务器监听程序

[nickxq@centos6 ~]$ mosquitto -c mosquitto.conf
1530948296: mosquitto version 1.4.15 (build date 2018-04-21 17:41:08+0800) starting
1530948296: Config loaded from mosquitto.conf.
1530948296: Opening ipv4 listen socket on port 1885.
1530948296: Opening ipv6 listen socket on port 1885.

服务器程序开始监听,正常。

mosquitto 密码文件中,密文确实需要加密

** 以为问题解决了么?! NO,没有 。不信? 继续看**

此时,建立订阅者和发布者

[nickxq@centos6 ~]$ mosquitto_sub -p 1885 -u nick -P nickxq -t "test"
Connection Refused: not authorised.
Connection Refused: not authorised.
Connection Refused: not authorised.
Connection Refused: not authorised.
^C
[nickxq@centos6 ~]$ mosquitto_pub -p 1885 -u nick -P nickxq -t test -m "Hello。"
Connection Refused: not authorised.
Error: The connection was refused.
[nickxq@centos6 ~]$

不论哪个客户端,都会提示错误 Refused: not authorised. 。

显然,这是密码不正确。可能的原因有很多,最容易想的就是加密方式,linux用户密码生成和mosquitto采用的方法不同。

那么,如何得到一个正确的密文串呢。

通过查看手册,知道了mosquitto_passwd程序

可以使用mosquitto_passwd程序,自动生成

但是,问题是 command not found

[nickxq@centos6 ~]$ mosquitto_passwd --help
-bash: mosquitto_passwd: command not found

这个问题原因我没找到,但是我重新下载编译了mosquitto-1.4.15,就有了mosquitto_passwd

[nickxq@centos6 ~]$ mosquitto
mosquitto mosquitto_passwd mosquitto_pub mosquitto_sub
[nickxq@centos6 ~]$ mosquitto_passwd --help
mosquitto_passwd is a tool for managing password files for mosquitto. Usage: mosquitto_passwd [-c | -D] passwordfile username
mosquitto_passwd -b passwordfile username password
mosquitto_passwd -U passwordfile
-b : run in batch mode to allow passing passwords on the command line.
-c : create a new password file. This will overwrite existing files.
-D : delete the username rather than adding/updating its password.
-U : update a plain text password file to use hashed passwords. See http://mosquitto.org/ for more information.

这里使用 -U 将已有的明文更改为密文

[nickxq@centos6 ~]$ vim ./mqtt_passwd
nick:nickxq
[nickxq@centos6 ~]$ mosquitto_passwd -U ./mqtt_passwd
[nickxq@centos6 ~]$ cat ./mqtt_passwd
nick:$6$U3Ln7cn3+tKv0UVG$IU+jS8lPN9iH9N49u7t/eseOOKdvt8cvFjIOXrBo3LPMhf7YidcFubugPGjKOXDkjriiZdRnszb83LNLheVmlw==

当然,也可以直接向文件中写入一个新的用户名和密码

[nickxq@centos6 ~]$ touch mqtt_passwd
[nickxq@centos6 ~]$ mosquitto_passwd -b mqtt_passwd nick nickxq

原文地址:https://www.cnblogs.com/NickQ/p/9277315.html

本帖完

MQTT入门2 -- “Error: Invalid password hash for user nick.”和“Connection Refused: not authorised.”的更多相关文章

  1. 运行SparkStreaming的NetworkWordCount实例出错:Error connecting to localhost:9999 java.net.ConnectException: Connection refused 解决办法

    一.背景 首先按照Spark的官方文档来运行此实例,具体方法参见这里,当运行命令$ nc -lk 9999开启端口后,再运行命令$ ./bin/run-example streaming.Networ ...

  2. docker 错误:Error response from daemon: cannot stop container: connect: connection refused": unknown

    docker 错误:Error response from daemon: cannot stop container: 795e4102b2de: Cannot kill container 795 ...

  3. ubuntu Error fetching https://gems.ruby-china.org/: Errno::ECONNREFUSED: Connection refused

    排除网络原因的前提下 是 权限问题  用 sudo 来 执行命令即可  sudo  gem sources -a https://gems.ruby-china.org/

  4. mysql 错误 ERROR 1372 (HY000): Password hash should be a 41-digit hexadecimal number 解决办法

    MySQL创建用户(包括密码)时,会提示ERROR 1372 (HY000): Password hash should be a 41-digit hexadecimal number: 问题原因: ...

  5. ERROR 1372 (HY000): Password hash should be a 41-digit hexadecimal number;

    rpm 安装了 mysql 5.6 的版本 遇到的问题 1. 提示与5.1版本的有冲突. 解决方式, 是 rpm --force -ivh rpm包.rpm 进行强制安装 2. 启动 mysql 后, ...

  6. MQTT入门1 -- mosquitto 安装

    原文链接:https://www.cnblogs.com/NickQ/p/9247638.html MQTT入门1 -- mosquitto 安装 简介: MQTT(Message Queuing T ...

  7. ORA-00988: missing or invalid password(s)

    创建账号或修改账号密码时有可能会遇到ORA-00988: missing or invalid password(s),那么什么情况下会遇到这种错误呢? 一般是因为密码的设置不符合命名规范: 1:密码 ...

  8. Java:Linux上java -jar xxx.jar命令执行jar包时出现Error: Invalid or corrupt jarfile xxx.jar解决方案

    背景: 从ftp上上传jar包到linux上,之后在linux上通过ftp命令下载jar包文件,开始执行Java-jar,一直提示错误:Error: Invalid or corrupt jarfil ...

  9. 数据库里账号的密码,需要怎样安全的存放?—— 密码哈希(Password Hash)

    最早在大学的时候,只知道用 MD5 来存用户的账号的密码,但其实这非常不安全,而所用到的哈希函数,深入挖掘,也发现并不简单-- 一.普通的 Hash 函数 哈希(散列)函数是什么就不赘述了. 1.不推 ...

随机推荐

  1. LeetCode33 搜索旋转排序数组

    搜索旋转排序数组 题目描述: 假设按照升序排序的数组在预先未知的某个点上进行了旋转. ( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] ). 搜索一个给定的目标 ...

  2. windows更新文件和windows.old文件夹清理

    在对Windows系统进行升级之后会发现C盘多出一个Windows.old文件夹,直接点击删除缺没有权限,不能进行删除. 在对window进行修复补丁时会产生大量的补丁更新文件,有时不清楚文件存在在哪 ...

  3. linux gcc 区分32位或64位编译 && 请问arm存储,是以小端格式还是以大端格式?

    linux gcc 区分32位或64位编译   Linux系统下程序如何区分是64位系统还是32位系统 经过对include的翻查,最后确定gcc以__i386__来 进行32位编码,而以__x86_ ...

  4. Windows 下安装Python包(Numpy)的错误:Unable to find vcvarsall.bat

    情景简介: Windows 环境下安装Python2.7的Numpy扩展包时提示:error: Unable to find vcvarsall.bat 经过不懈的Google/Bing,发现不仅安装 ...

  5. Linux性能监控(程序篇)

    性能数据的监控,除了针对整机进行外,还要求我们对某一运行的程序单独进行.常用的程序监控命令有ps和top. Ps ps命令最常用的还是用于监控后台进程的工作情况,因为后台进程是不和屏幕键盘这些标准输入 ...

  6. POI读取单元格信息及单元格公式

    Java操作EXCEL的利器一般都是POI和JXL,鄙人只是POI的忠实粉丝.(其实我是没有用过JXL). 现在大多数的excel都是07以上的版本,所以我一般是用07的基础上使用POI. 一.读取单 ...

  7. 【RabbitMQ】1、安装

    1.  下载 下载地址:http://www.rabbitmq.com/download.html 2.  windows下安装 2.1. 安装Erlang 下载:http://www.erlang. ...

  8. 2、Sublime Text 3 快捷键(实用,快速换行等)

    选择类 Ctrl+D :选中光标所占的文本,继续操作则会选中下一个相同的文本. Alt+F3:选中文本按下快捷键,即可一次性选择全部的相同文本进行同时编辑.举个栗子:快速选中并更改所有相同的变量名.函 ...

  9. BZOJ3208:花神的秒题计划Ⅰ(记忆化搜索DP)

    Description 背景[backboard]: Memphis等一群蒟蒻出题中,花神凑过来秒题……   描述[discribe]: 花花山峰峦起伏,峰顶常年被雪,Memphis打算帮花花山风景区 ...

  10. js apply的用法

    问题: 1.apply和call的区别在哪里 2.什么情况下用apply,什么情况下用call 3.apply的其他巧妙用法(一般在什么情况下可以使用apply) 我首先从网上查到关于apply和ca ...