2020.06.16 · 技術と道具

Mosquittoでパスワードログインを使う

MosquittoブローカーをUbuntuサーバに構築しているのですが、あわせてパスワードログインをできるようにしたいと思います。

ちなみに、UbuntuやCentOSといった多くのLinuxディストリビューションにはMosquittoは標準リポジトリに入っているので、Ubuntu 18.04 LTSでは下記のようにインストールします。

BASH
apt install mosquitto mosquitto-clients

ブローカーだけならmosquittoだけで良いのですが、パブリッシャーとサブスクライバーも必要な場合は、mosquitto-clientsも合わせてインストールします。

パスワードファイルの作成

さて、本題です。Mosquittoにパスワードログインを設定するには、まずはパスワードファイルを作成します。

BASH
mosquitto_passwd -c /etc/mosquitto/pwfile

対話型でパスワードを聞かれるので入力すると、入力したパスワードが暗号化された、パスワードファイルが作成されます。-cオプションはパスワードファイルの新規作成です。既存のファイル名を指定した場合は、上書きになります。

複数のユーザとパスワードをまとめてパスワードファイルに設定するには、まず下記のようなファイルを作成します。ここでは、ファイル名を/etc/mosquitto/pwfileにします。

TEXT
user01:pass01
user02:pass02

そのあとで、下記のコマンドを実行すると、平文で入力していたパスワードが暗号化されます。

BASH
mosquitto_passwd -b /etc/mosquitto/pwfile

mosquitto.confの設定

Mosquittoの設定ファイル(/etc/mosquitto/mosquitto.conf)に、下記を追記します。

TEXT
allow_anounymous false
password_file /etc/mosquitto/pwfile

allow_anonymousをfalseにすることで、パスワードログインが必須になります。
あとは、Mosquittoブローカーの再起動を行います。

Mosquittoクライアントで動作を検証

下記のようにサブスクライバーを起動します。
testトピックをサブスクライブします。

BASH
mosquitto_sub -u user01 -P pass01 -t test

パブリッシャーでtestトピックにメッセージをパブリッシュします。

BASH
mosquitto_pub -u user01 -P pass01 -t test -m message

これで、サブスクライバー側にメッセージが届けば大丈夫です。

ちなみに、mosquitto_sub -t test -dのようにユーザ名とパスワードを指定しないと、Connection Refused: not authorizedというメッセージが表示されることを確認しましょう。(-dオプションを指定することによって、デバッグメッセージも確認できます。)

2020/06/16 21:40
← 41歳になりました
テレワークで会社ネットワーク上のリソースを使う3つの方法 →
井上 研一
経済産業省推進資格ITコーディネータとして中小企業のDX・AI活用の現場で伴走支援を行う。「ITCプロセスガイドライン4.0」および「中小企業向けAI活用ガイド」執筆メンバー。著書・講演多数。ITエンジニアとして25年以上の実務経験。AI導入の実務に10年以上携わる。自ら開発したAIサービス「Gen2Go」が北九州発!新商品創出事業の認定を受ける。2026年4月より北九州市立大学大学院マネジメント研究科の学生としての顔も持つ。

本サイトおよびブログに掲載している内容は、特に明記のない限り、井上研一個人の見解に基づくものです。所属・関与する組織、団体、企業、研究会等の公式見解を示すものではありません。