Skip to content

Latest commit

 

History

History
81 lines (67 loc) · 4.29 KB

远程登录.md

File metadata and controls

81 lines (67 loc) · 4.29 KB

远程登录

远程登录简介

物联网通信平台为方便设备端进行远程运维,支持正常ssh指令操作,实现内网穿透,对无公网IP的设备提供ssh远程登录功能。

远程登录 Topic

  • 订阅消息Topic: $sys/operation/result/${productid}/${devicename} 用于订阅云端下发(下行)请求消息。
  • 请求消息Topic: $sys/operation/${productID}/${deviceName} 用于发布(上行)请求消息。

运行示例程序体验远程登录功能

1 在设备运行的系统上开启 ssh 服务

如Android系统上运行实例程序,可安装termux-app,继而在 Termux App 上开启 ssh服务。 打开 Termux App 后,先安装openssh, 输入 'pkg upgrade' 'pkg install openssh' 安装好openssh后,开启 ssh服务, 输入'sshd' ,无错误提示说明开启 ssh服务 成功。 查看 ssh服务 的ip,输入'ifconfig',如下示例中 ssh服务 的 ip为 192.168.1.107 ,Termux App上开启的 ssh服务 默认端口号为8022。

    ~ $ ifconfig
    Warning: cannot open /proc/net/dev (Permission denied). Limited output.
    lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
            inet 127.0.0.1  netmask 255.0.0.0
            unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 1000  (UNSPEC)

    wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 192.168.1.107  netmask 255.255.255.0  broadcast 192.168.1.255
            unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 1000  (UNSPEC)

Termux上查看当前用户名,输入'whoami', 如下示例中 当前用户名为 u0_a618。

    ~ $ whoami
    u0_a618

Termux上设置对应的密码,输入'passwd', 输入并确认设置的密码。

2 填写认证连接设备的参数 示例中编辑 app-config.json 文件中的配置信息

{
  "PRODUCT_ID":        "",
  "DEVICE_NAME":       "",
  "DEVICE_PSK":        "",
}

IoTMqttFragment.java 中,配置 ssh服务 的IP及端口号,填入上面步骤中 ssh服务 IP,以及端口号8022

{
    // ssh 要访问的IP
    private String sshHost = "192.168.1.107";
    // ssh 端口号 sshd服务一般默认端口22
    private int sshPort = 8022;
}

3 运行示例程序

选择hub.hub-android-demo的 Android App ,点击 Android Studio 菜单栏上的 Run 'hub.hub-android-demo' 按钮安装 Demo。

运行示例程序,在基础功能模块上,点击连接MQTT按钮,进行认证连接。示例代码如下:

mMQTTSample = new MQTTSample(mParent, new SelfMqttActionCallBack(), mBrokerURL, mProductID, mDevName, mDevPSK, mDevCert, mDevPriv, mSubProductID, mSubDevName, mTestTopic, null, null, true, new SelfMqttLogCallBack(), sshHost, sshPort); //MQTTSample类是Demo对SDK接口调用的一层封装类。
mMQTTSample.connect(); // MQTT连接

观察Logcat日志:

    I/TXMQTT1.1.0: Start connecting to tcp://87PULDPUHE.iotcloud.tencentdevices.com:1883
    I/TXMQTT: onConnectCompleted, status[OK], reconnect[false], userContext[MQTTRequest{requestType='connect', requestId=0}], msg[connected to tcp://87PULDPUHE.iotcloud.tencentdevices.com:1883]
    I/System.out: 2022/04/01 08:22:20 INFO  TXMqttLogImpl info 133  - Starting subscribe topic: $sys/operation/result/87PULDPUHE/device00
    D/TXMQTT: onSubscribeCompleted, status[OK], topics[[$sys/operation/result/87PULDPUHE/device00]], userContext[], errMsg[subscribe success]

以上是设备已上线,并成功订阅ssh所需要监听的Topic 的日志

4 在腾讯云物联网通信平台控制台上操作远程登录

产品列表 --> 选择示例代码中配置的设备对应的产品 --> 设备列表 --> 选择示例代码中配置的设备 --> 在线调试 --> 远程登录 --> 开启远程SSH登录 --> 查询开启状态 --> 登录 --> 输入当前开启的 ssh服务 的管理员账号以及密码(之前查看到的用户名及设置的密码) --> 登录 --> 即可操作对应ssh指令