动手实现Linux远程控制

小糖豆在工作中有时需要将深度学习算法和模型部署到Jetson TX2嵌入式开发板。Jetson TX2 模块采用 NVIDIA Pascal™ 架构,性能强大,且外形小巧,节能高效,非常适合机器人、无人机、智能摄像机和便携医疗设备等智能边缘设备。

但是在平时部署代码的时候,经常需要给TX2外接显示屏、鼠标键盘,操作起来极其不方便,于是小糖豆这几天捣鼓了下远程控制,在局域网下直接远程部署代码,非常方便。

总结了两种方式,供大家参考(PS:下文中将主动实施远程控制的机器称为用户端,被远程控制的机器称为服务端)。

SSH远程控制

使用SSH的好处是配置方便,一步到位,而且速度非常快。远程部署代码时使用SSH省缺了不少麻烦。配置SSH的方式如下:

  • 服务端安装OpenSSH

在服务端安装开源工具OpenSSH,将其配置成服务器。

终端输入

sudo apt-get install openssh-server

  • 服务端获取IP

现在该服务端处于可以被SSH登录的状态,但是在用户端控制需要知道服务端的IP地址。在服务端输入如下指令获取IP。

ifconfig

如果系统提示没有安装,按照提示就可以。

sudo apt install net-tools

确保ifconfig能用后,获取IP地址。比如小糖豆的tx2 ip地址是192.168.8.112。

  • 用户端远程控制

在用户端输入指令,格式为

ssh username@ip

ssh tx2@192.168.8.112

输入指令后,密码为服务端密码,连接成功后会出现类似如下信息:

现在可以在用户端开心的操作服务端了。随便输个指令测试下:

传输文件时使用scp命令,格式为

【文件】scp xxx  username@ip:xxx

【文件夹】scp -r xxx  username@ip:xxx

举个栗子:

VNC远程控制

SSH只能用来命令行控制,如果想要看到服务端的桌面,可以使用VNC远程控制。具体方式如下:

  • 服务端安装Xrdp

终端输入命令

sudo apt-get install xrdp vnc4server xbase-clients

  • 服务端设置桌面共享

在/usr/share/applications目录下打开Desktop Sharing

可能会有小伙伴在这一步发现Desktop Sharing打不开(事实上小糖豆也没打开),可以按如下操作解决该bug。

首先终端命令行输入

sudo vim /usr/share/glib-2.0/schemas/org.gnome.Vino.gschema.xml

在末尾两个介绍标签之前添加一个key

<key name='enabled' type='b'> <summary>Enable remote access to the desktop</summary> <description> If true, allows remote access to the desktop via the RFB protocol. Users on remote machines may then connect to the desktop using a VNC viewer. </description> <default>false</default>    </key>

可以参考小糖豆添加key后的结果:

继续在终端输入指令使其编译生效:

sudo glib-compile-schemas /usr/share/glib-2.0/schemas

现在可以正常打开Desktop Sharing了,桌面共享选项中开启共享,远程连接的密码根据需要自己设定,可参考小糖豆的配置,如下图:

  • 服务端安装dconf-editor

终端输入指令

sudo apt-get install dconf-editor

安装完成后运行dconf-editor,注意前面不要加sudo

dconf-editor

出现如下界面后,将"promotion-enabled"选项和"requre-encryption"选项关闭

  • 服务端设置开机启动

打开Startup Applications

打开后点击Add添加一个新的启动项,在Command一栏中填写如下指令:

/usr/lib/vino/vino-server

配置完毕,重启服务端。

  • 用户端远程控制

打开Ubuntu自带的软件Remmina Remote Desktop Client

点击加号新建一个连接

name一栏根据喜好设置,Protocol一栏里面选择VNC-Virtual Network Computing

在Server一栏中点击最右边三个点,选择要连接的服务端,对于IPV4和IPV6随便选一个就行。

Password一栏中填入设置服务端时候的远程连接密码,然后点击Connect就大功告成了(速度有点感人)。

(0)

相关推荐