物联网通信平台为方便设备端进行远程运维,支持正常ssh指令操作,实现内网穿透,对无公网IP的设备提供ssh远程登录功能。
- 订阅消息Topic:
$sys/operation/result/${productid}/${devicename}
用于订阅云端下发(下行)请求消息。 - 请求消息Topic:
$sys/operation/${productID}/${deviceName}
用于发布(上行)请求消息。
1 在设备运行的系统上开启 ssh 服务
如Mac OS系统上运行实例程序,打开终端,输入命令 'sudo launchctl load -w /System/Library/LaunchDaemons/ssh.plist' ,无错误提示说明开启 ssh服务 成功
输入 'sudo launchctl list | grep sshd' 查看 SSH 服务 是否已运行。
(base) w@W-MB0 ~ % sudo launchctl list | grep sshd
Password:
- 0 com.openssh.sshd //显示该行内容为ssh服务已经在运行了
您也可在Mac OS系统的 系统偏好设置 --> 共享 --> 远程登录 ,查看 远程登录状态为打开, ssh服务 已开启 。
如您需要关闭 ssh服务,可在终端中, 输入命令 'sudo launchctl unload -w /System/Library/LaunchDaemons/ssh.plist' ,无错误提示说明关闭 ssh服务 成功。
您也可在Mac OS系统的 系统偏好设置 --> 共享 --> 远程登录 ,查看 远程登录状态为关闭, ssh服务 已关闭 。
2 填写认证连接设备的参数 示例中编辑 unit_test_config.json 文件中的参数配置信息
{
"TESTMQTTSAMPLE_PRODUCT_ID": "",
"TESTMQTTSAMPLE_DEVICE_NAME": "",
"TESTMQTTSAMPLE_DEVICE_PSK": "",
}
在 MqttSshSampleTest.java 中,配置 ssh服务 的IP及端口号,Mac OS 系统开启的 ssh服务 默认IP为127.0.0.1,端口号为22
{
// ssh 要访问的IP
private static String sshHost = "127.0.0.1";
// ssh 端口号 sshd服务一般默认端口22
private static int sshPort = 22;
}
3 运行示例程序
运行 MqttSshSampleTest.java 的main函数,使设备上线。示例代码如下:
public static void main(String[] args) {
connect();
try {
while(true) {
Thread.sleep(5000);
}
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private static void connect() {
...
mqttconnection = new TXMqttConnection(mBrokerURL, mProductID, mDevName, mDevPSK,null,null ,true, new SelfMqttLogCallBack(), new callBack(), null, sshHost, sshPort);
mqttconnection.connect(options, null);
}
观察Logcat日志:
2022/04/01 06:57:09 INFO TXMqttConnection info 133 - Start connecting to tcp://87PULDPUHE.iotcloud.tencentdevices.com:1883
2022/04/01 06:57:09 INFO TXMqttConnection info 133 - onConnectCompleted, status[OK], reconnect[false], userContext[], msg[connected to tcp://87PULDPUHE.iotcloud.tencentdevices.com:1883]
2022/04/01 06:57:09 INFO TXMqttLogImpl info 133 - Starting subscribe topic: $sys/operation/result/87PULDPUHE/device01
2022/04/01 06:57:09 DEBUG TXMqttLogImpl debug 145 - onSubscribeCompleted, status[OK], topics[[$sys/operation/result/87PULDPUHE/device01]], userContext[], errMsg[subscribe success]
以上是设备已上线,并成功订阅ssh所需要监听的Topic 的日志
4 在腾讯云物联网通信平台控制台上操作远程登录
产品列表 --> 选择示例代码中配置的设备对应的产品 --> 设备列表 --> 选择示例代码中配置的设备 --> 在线调试 --> 远程登录 --> 开启远程SSH登录 --> 查询开启状态 --> 登录 --> 输入当前开启的 ssh服务 的管理员账号以及密码(即Mac OS系统中用户与群组对应的管理员账号以及密码) --> 登录 --> 即可操作对应ssh指令