开发者

How to connect to Mosquitto MQTT Broker, that is running on a Google Cloud Virtual Machine Instance, using mqtt.js

开发者 https://www.devze.com 2022-12-07 19:59 出处:网络
What I am trying to achieve: I have a Mosquitto MQTT Broker running on a Google Cloud virtual machine (Ubuntu), and I want to be able to connect to it from my local PC using mqtt.js

What I am trying to achieve: I have a Mosquitto MQTT Broker running on a Google Cloud virtual machine (Ubuntu), and I want to be able to connect to it from my local PC using mqtt.js

My setup

I have created a VM instance in Google Cloud, running Ubuntu 20.04.LTS.

Some of the settings:

Firewall – allow HTTPS and allow HTTP
Firewall rule – opens port 1883

I installed Mosquitto MQTT Broker (version 1.6.9) on this VM.

I was able to verify the installation and that it was running, by opening to SSH terminals, one to publish, one to subscribe

mosquitto_sub -t test
mosquitto_pub -t test -m “hello”

Then I read that when I want to connect to VMs using third-party tools, I must create and upload my own SSH keys to VMs:

ssh-keygen -t rsa -f C:\keys\VM_KEYFILE -b 2048 pwd: ****

I got two files now, the private and public keys:

VM_KEYFILE
VM_KEYFILE.pub

I then used icacls to modify the private key’s permissions:

icacls.exe VM_KEYFILE /reset
icacls.exe VM_KEYFILE /grant:r “$($env:username):(r)”
icacls.exe VM_KEYFILE /inheritance:r

I then successfully connected ot the VM from a Windows console:

ssh -i "VM_KEYFILE" username@vm_public_ip_address

So now I want to try and connect using node.js

I already have a javascript file that uses mqtt.js to connect to some of the public MQTT brokers, e.g. HiveMQ Some of its settings are:

let broker_host = 'broker.hivemq.com';
let broker_port = 1883;
let client_id = 'my_client_1';

const connection_options = {
    port: broker_port,
    host: broker_host,
    clientId: client_id,
    clean: true,
    keepalive: false
};

My question: How would I modify this JavaScript file to connect to the MQTT broker that is running in the Google Cloud VM

There is no username/password/authentication set up for the broker itself, just the VM.

I tried something like this, but I have no idea how to use the SSH key

let broker_host_gcm_vm = 'https://<vm_public_ip_address>

UPDATE

I can connect to the broker from both (a) MQTT Explorer, and (b) MQTTX deskptop app.

All I have to enter for the c开发者_如何学Connection details is:

Host: mqtt://<ip address>
Port: 1883

Then I can publish / subscribe successfully.

I tried changing my JavaScript connection to the following, but I still can't connect from here:

let broker_host_gcm_vm1 = 'mqtt://<ip address>';
0

精彩评论

暂无评论...
验证码 换一张
取 消