2024年6月7日发(作者:)

核件旦画

M

2021

年第

03

lE3iaalSlE3

--------------------------------------------------------------------------------------------------------

(总第

219

J

基于

Web

SSH

技术的

Linux

远程桌面的原理与实现

陈超'

李春颖陈科燕

2

(1

.浩鲸云计算科技股份有限公司

江苏南京

211153

2.

南京工程学院计算机工程学院

江苏南京

211167

)

摘要

随着大数据和人工智能的热潮

需要建立各种不同的虚拟机进行相关的实验

虽然不同的虚拟机解决了不同系统

和环境的需求问题

但是大量虚拟机的管理也是一个需要解决的问题

文章以

Web

SSH

技术为基础

文章设计开发了

Linux

下的远程桌面软件

基于远程桌面

可以有效的提供操作系统使用的便捷性和易用性

关键词:远程桌面

;

Linux

操作系统

虚拟机

中图分类号:

TP311.52

文献标识码:

B

文章编号:

2096-9759(

2021

)03-0138-03

1

Linux

的远程桌面系统及特性

随着大数据和人工智能的热潮

,计算机专业学生平常

做实验的环境要求也越来越复杂

通过

Web

虚拟机管理

2

使用

Web

SSH

实现远程桌面

2.1

相关技术介绍

2.1.1

NVM

介绍

平台把平台部署在公网服务器上

无论在何时何地,只要有

网有浏览器我们就可以进行相关的学习和实验

同时

过系统化的规划,每个相关的实验可以包含特定的虚拟机

让做实验的人单独管理,降低了管理的复杂度

同时也提高

NVM

全名

Node

Version

Manager,

nodejs

版本的管理

工具,

NVM

管理多个

nodejs

npm,

使

nodejs

可多版本共存

切换使用

我们可能同时在进行

2

个项目

2

个不同的项目所使

虚拟机操作的灵活性,

如果不出现特殊的情况

,基本可以实

现自主操作和管理虚拟机

基于

Cloud

Lab

可以实现

Linux

用的

node

版本又是不一样的

或者是要用更新的

node

版本进

行试验和学习

这种情况下,对于维护多个版本的

node

将会

的远程桌面系统

Cloud

Lab

基于

noVNC

Gate

one

分别

是一件非常麻烦的事情

NVM

就是为解决这个问题而产生

他可以方便的在同一台设备上进行多个

node

版本之间切

而这个正是

NVM

的价值所在

实现了

VNC

桌面和

SSH

终端的

Web

客户端

背后的

Labs

环境通过

Docker

镜像管理

本文拟采用如下方式逐步实现

Linux

的远程桌面访问

实现方案分成两个部分

Linux

是一个天然的网络的多用

户操作系统

因此

基于

Linux

天然的网络特征

第一部分

2.1.2

nodejs

介绍

是一个开源与跨平台的

JavaScript

运行时环境,

它是一个可用于几乎任何项目的流行工具

,是项目开发依赖

要实现的就是基于文本模式的形式进行远程联接

根据

是基于

Chrome

JavaScript

运行时建立的一个平台

,

际上它是对

Google

Chrome

V8

引擎进行了封装

它主要用于

创建快速的

可扩展的网络应用

Nodejs

釆用事件驱动和非

Linux

的设计理念

分布式的通信可以依赖于进程的概念进

行抽象

Socket

文件描述符看成多进程在网络形态下的

通行方式

根据这个目标

我们可以把远程等待连接的机

器看成一个始终在轮询的

Socket

监听进程

同时,把准备

建立连接的机器看成请求的

Socket

进程

那么

我们就可

以在

Linux

的工具箱中查找这种带有网络通信的功能的命

阻塞

I/O

模型,使其变得轻微和高效

非常适合构建运行在分

布式设备的数据密集型实时应用

运行于浏览器的

Java

script,

浏览器就是

Java

script

代码

的解析器

Nodejs

则是服务器端

JS

的代码解析器

存于服

令行程序

仅仅具有

Socket

连接功能是不够的

因为这

样的工具提供了网络通信的能力

这就是

web

shell

思想

务器端的

JS

代码由

Nodejs

来解析和应用

JS

解析器只是

JS

代码运行的一种环境

浏览器是

JS

行的一种环境

浏览器为

JS

提供了操作

D0M

对象和

window

的由来根据设计的目标

我们可以将网络通信和命令行

shell

进行组合,寻找一组带有网络通信的命令行工具完成

目标需求

实现方案的第二部分是实现远程桌面功能

不同于

Win

­

对象等接口

也是

JS

的一种运行环境

JS

提供操作文件

创建

http

服务

创建

TCP

UDP

服务等接口

Nodejs

可以完成其他后台语言能完成的工作

dows,

远程桌面有自己的专属协议

我们需要根据相应的协

议来寻找软件的实现

Linux

的开源工具箱中,

RDP

VNC

2.1.3

NPM

介绍

NPM

的全称是

Node

Package

Manager,

是随同

一起安装的包管理工具,

NPM

定义了包依赖关系标准

No

­

已经是远程桌面的事实标准

我们可以根据

VNC

进行第二部

分的设计与实现

综上所述

,我们首先根据

webshell

的思想进行文本模式

的连接

其次

在遵循

VNC

协议规范下寻找

RDP

的解决方案

这就是本文想要尝试的目标

dejs

身提供了基本的模块

但是在这些基本模块上开发实

际应用需要较多的工作

NPM

能解决

NodeJS

代码部署上

的很多问题

oNPM

上已经有大量的

Nodejs

库或框架

这些

库从各个方面可以帮助

Nodejs

的开发者完成较为复杂的应

收稿日期

:2021-02-23

作者简介:陈超

(1982-)

男,江苏南京人,

Java

工程师

浩鲸云计算科技股份有限公司

,

应用软件工程;李春颖

(1973-)

,

女,黑龙江佳木斯人,

讲师

南京工程学院计算机工程学院

应用软件工程;陈科燕

(1979-)

,

江苏常熟人

讲师

南京工程学院计算机工程学院

应用软件工程

138

Changjiang

Information

&

Communications

常见的使用场景有以下几种

:允许用户从

NPM

服务器

下载别人编写的第三方包到本地使用

允许用户从

NPM

务器下载并安装别人编写的命令行程序到本地使用;允许用

户将自己编写的包或命令行程序上传到

NPM

服务器供别人

使用

2.1.4

WebSSH

介绍

Web

SSH

是一个简单的

Web

SSH

客户端

用作连接到

SSH

服务器的

SSH

客户端

它是用

Python

编写的

基于

tornado

,

paramiko

SSH

是一种网络协议

在不

同的计算机登录时候

通过加密技术来保证通信的安全和可

靠性

2.2

设计过程

2.2.1

下载安装

(1)

安装

NVM

Linux

作为一个比较成熟的操作系统

已经提供了相当丰

富的解决方案

用来解决日常工作的问题

Unix

系统中增

加新的命令是一件很容易的事

把程序的可执行文件放到以

下任意一个目录就可以了:

/bin

,

/usr/bin

,

/usr/local/bin

,

这些目

录里面存放着很多系统命令

Unix

系统中一开始并没有这么

多的命令

一些人编写程序用来解决某个特定的问题,而其他

人也觉得这个程序很有用

,

随着越来越多的使用

,

这个程序就

逐渐成了

Unix

的标准命令

因此

我们在组建开源项目的时

候,我们就可以将

Linux

命令灵活的进行组合应用

,

在本文中

我们首先使用安装的就是

crul

命令

使用

curl

命令

,

curl

是一个根据

URL

规则

,

利用命令行进

行文件传输工具。

Curl

命令可以很好的支持文件的上传和下

是综合传输工具

具体命令如下

curi-o-hUps://usercontentcom/creationix/nvrn/v0.33.8

/

|

bash

首先输入

sudo

vim

/etc/,

进入

/etc

目录下的

re-

文件进行编辑操作

找到

namesever,

将后面的

DNS

修改为

114.114.114.114

或者&

8.&8,

这次设置

DNS

仅此次生

重启即恢复原样

再次输入

curl

命令即可成功下载

(2)

安装

Nodejs

使用

NVM

安装

Nodejs,

使用

nvmls-remote

查看目前线上

所能安装的所有

node

版本

选择版本

14.4.0,

输入

nvm

install

14.4.0,

下载安装

14.4.0

版本的

Nodejs

(3)

查看是否成功安装

npm,

nodejs

因为

NPM

是随同

一起安装的包管理工具

所以

不需要再次安装

输入

npm

-v,

node

-v

来查看是否已经成功安

npm,nodejs,

如图

2-4

所示,结果表明已经安装成功

(4)

下载

Web

SSH2

Git

是一个开源的分布式版本控制系统

早期是

Linux

Linus

Torvalds

为了帮助管理

Linux

内核开发而开发的一个

开放源码的版本控制软件

与常用的版本控制工具

CVS,

Sub-

version

等不同

它釆用了分布式版本库的方式,不必服务器端

软件支持

本次使用

git

clone

命令,从现有

GIT

仓库中拷贝

项目

输入

Git

查看是否有安装

如果没有

根据反馈提示输

sudo

apt

install

git

安装

输入

git

clone

/billchurch/Web

SSH2,

git

仓库中拷贝

Web

SSH2o

(5)

安装

Web

SSH2

139

陈超等:基于

Web

SSH

技术的

Linux

远程桌面的原理与实现

安装

Web

SSH2

首先要先进入

Web

SSH2/app

目录

输入

cd

Web

SSH2/app

即可进入该目录

然后使用

npm

init

初始

化,之后一路回车

有需要输入

yes

的就输入

yeso

npminit

用来初始化项目

使用

npm

init

指令用来创建项目描述文件

,

命令行里会以交互的形式让你填一些项目的介

绍信息

不知道怎么填的直接一直回车,在项目目录下会自动

生成

packagejson

文件,打开可以看到刚才配置的项目信息

再之后

,输入

npm

install

-production

安装生产依赖

,

添加

production

参数后将仅仅安装

dependencies

里面的包

不会安装

devDependencies

里面的包

2.2.2

实现远程连接

运行

Web

SSH

Web

SSH2/app

目录下

输入

npm

start,

启动模块

通过浏览器测试是否连接成功,实现远程桌面

式为

Web

SSH

服务器

IP:

Web

SSH

端口

/ssh/host/

任意可

ping

通终端

IP

2.2.3

改进使用

docker

VNC

实现桌面

Docker

是一个开源项目

诞生于

2013

年初,遵从了

Apa

­

che

2.0

协议,

Docker

的目标是实现轻量级的操作系统虚拟化

解决方案

VNC

(Virtual

Network

Computer)

是虚拟网络计算

机的缩写

它是由

AT&T

的欧洲研究实验室开发的

他的本

质是一种显示系统:将完整的窗口界面通过网络

传输到另一

台计算机的屏幕上

其实现过程如下

第一步:下载安装

Docker

(1)

设置仓库

更新

apt

包索引

输入

sudo

apt-get

update,

安装

apt

依赖

用于通过

HTTPS

来获取仓库,输入

sudo

apt-get

install

apt-

transport-https

ca-certificates

curl

gnupg-agent

software

­

properties-common

o

添加

Docker

的官方

GPG

密钥

输入

curl

-fsSL

/linux/ubuntu/gpg

|

sudo

apt-key

add

9DC8

5822

9FC7

DD38

854A

E2D8

8D81

803C

OEBF

CD88

过搜索指纹的后

8

个字符

验证现在是否拥有带有指纹的密

输入

sudo

apt-key

fingerprint

0EBFCD88

,

至此

添加密钥成

设置稳定版仓库

输入

sudo

add-apt-repository

"deb

[arch=amd64]

/linuxAibuntu

$(lsb_

release

-cs)

stable"

(2)

安装

Docker

Engine-Community

安装最新版本的

Docker

Engine-Community

container

­

ci,

输入

sudo

apt-get install

docker-ce

docker-ce-cli

container-

安装完成之后

可以测试

Docker

是否安装成

?tl

sudo

doc

­

ker

runhello-worldo

通常不能成功的主要原因在于;

docker

本地没有找到

hello-world

镜像

,也没有从

docker

仓库中拉取

镜像

大多由于

docker

服务器在国外

,国内的访问往往无法正

常拉取镜像

此时就需要我们为

docker

设置国内阿里云的镜

像加速器

(或者清华大学等)解决方案如下

进入

/etc/docker

目录

创建文件

文件,输入

sudo

touch

,

修改文件权限为可读可写可执行

输入

sudo

chmod

777

修改配置文件,添加阿里云镜像地址

重启

docker

服务,输入

systemctl

restart

docker,

再次测试拉取

helloworld

成功拉取

Changjiang

Information

&

Communications

第二步:下载安装

VNC

(1)

安装

xllvnc

输入

sudo

apt-get

install

xllvnc

-y,

安装

xllvnc,

并设置

vnc

密码

输入

sudo

xl

lvnc

-storepasswd

/etc/xl

,

进行

VNC

的密码设置

⑵创建

xllvnc

自启动服务

修改件,输入

sudo

vim/Hb/systemd/system/xl

e,

然后启动

xllvnc

服务

在命令行输入

sudo

systemctl

enable

xl

lvnc

sudo

service

xllvnc

start,

启动

xllvnc

服务

第三步

实现远程桌面

(1)

拉取镜像

输入

docker

pull

dorowu/ubuntu-desktop-lxde-vnc,

拉取镜

此时出现的错误往往是权限的问题

docker

命令的操作都

要用系统

guanlizhe

身份执行

加上

sudo

再次拉取

便可以拉

取成功

(2)

设计完成

运行容器

输入的命令行格式如下

docker

run

-p

6080:80

-

p

5900:5900

-e

VNC_PASSWORD=VNC

登录的密码

-v

/dev/

shm:/dev/shm

dorowu/ubuntu-desktop-lxde-vnc

其中

IP

设置了端口参数

,6080

web

版的

Vnc,

可以在

浏览器上直接访问桌面环境

,5900

是使用客户端工具

vnc

vi

­

ewer

连接的端口

该镜像以

VNC

的方式连接到桌面环境服

务器

可以下载个

VncViewer

作为客户端连接到容器

根据格式

我输入的命令为

sudo

docker

run

-p

6080:80

-e

VNC_PASSWORD=531

165134

-v

/dev/shm:/dev/shm

dorowu/

ubuntu-desktop-lxde-vnc

在浏览器中输入完整的网址:

192.168.0.105:6080/#/„

即可观察到结果

2.3

远程桌面的安全性设计

不同于

windows

操作系统,

Linux

在设计之初就没有将图

形用户界面作为交互的重点

它是使用

X-window

技术

GUI

界面挂载在操作系统内核之上

然而

对于绝大多数的普通

用户而言

"桌面

是用户登录到操作系统之后所看到的屏幕

显示

也是普通用户使用计算机进行工作的交互界面

为了

便捷用户的使用

,

本文提供的用户界面也必须考虑到易用性。

参考

windows

的设计

桌面用户要求方便使用

,

但是远程桌面

必须考虑到安全因素

最简易有效的安全策略就是密码

安全强度足够的密码

是系统安全的第一道防线

由于

Linux

天生就是一台网络计

算机

那么强健的密码策略必须遵循

比如至少

8

位,包含数

大小写字母以及特殊字符等等

Linux

天生的多用户特性也在远程桌面连接中必须加以

考虑

不同于

windows,

在远程连接

Linux

桌面以后,锁定屏

幕的登入

登出操作必须考虑

。同时

应当参考

SELinux

安全

策略

必须对用户进程的权限进行最小化设定

从而确保使用

远程桌面登录系统的时候

及时遭受了网络攻击也不会造成

重大影响

最后,文件操作也需要引起关注

尽量隐藏不必要的文

件和文件夹

,关闭文件共享

在本文的实践中

如果有不想

陈超等:基于

Web

SSH

技术的

Linux

远程桌面的原理与实现

被其他用户访问的文件,最简易的方式就在原文件之前加一

“.

2.4

远程桌面的优化:使用设计模式提供可复用的远程桌

面软件架构

Linux

的设计有若干哲学:一方面,

keep

it

simple.

它强

调所有的

linux

的工具应当是小而美的

如果一个软件过于

庞大

那么它所带来的软件维护成本必然十分高昂

linux

的远程桌面软件中

我们如何基于这个设计哲学来提升远程

桌面的软件质量呢

答案显而易见

就是利用现有的工具进

行组件式开发

在上文的介绍

当前的软件就基于

curl

Web

SSH

进行了组合

另一方面

Do

not

repeat

yourself,

组合优

先原则

当前的软件就是及时有效的组合了

curl

WebSSH

工具

,像搭积木一样将目标需要组合起来

既可以提升开发

的速度

软件的质量也可以得到保证

3

结语

综上所述

Linux

是一个高度自由的定制化的开源系统,

相较于

Windows

系统易用性稍显不足

本文提供了一种基于

Web

SSH

的方式

使得初级的

Linux

用户也可以借助于类似

Windows

桌面环境的方式使用操作系统

这不失为一种便捷

的解决方案

参考文献

[1]

叶核亚著.数据结构

(JAVA

版)

[M].

北京

:电子工业出版

,2015.

[2]

Alfred

V.

Aho,

Monica

,Ravi

Sethi,Jeffrey

著,赵建华

郑滔

戴新宇译.编译原理(第

2

版)

[M].

北京:机

械工业出版社

,200&

[3]

Thomas

H.

Cormen,

Charles

E.

Leiserson,

Ronald

,

Clifford

Stein

著,殷建平

徐云

王刚

刘晓光

苏明

邹恒明,

王宏志译.算法导论(原书第三版)

[M].

北京:机械工业出

版社

,2013.

[4]

刘伟.设计模式实训教程(第二版)

[M].

北京:清华大学出

版社

,2018.

[5]

Zhou,

Chunjie,

and

Hui

Chen.

"Development

of

a

PLC

virtual

machine

orienting

IEC

61131-3

standard."

[M1.2009

Interna

­

tional

Conference

on

Measuring

Technology

and

Mechatro-

nics

Automation.

Vol.

3.

IEEE,

2009.

[6]

Leonard

Richardson,

Mike

Amundsen

赵震

_

李哲译.

RESTful

Web

APIs

中文版

[M],

北京

电子工业出版社,

2014.

[7]

姜有林.嵌入式实时操作系统

[J].

科技信息

,2008(3).

[8]

Labrosse

J

J.

uC/OS-IU:

The

Real-Time

Kernel

and

the

Tex

­

as

Instruments

Stellaris

MCUstM],

Micrium

Press,

2010

[9]

Wang

S,

Ravishankar

C

V,

Shin

K

G.

Open

architecture

controller

software

for

integration

of

machine

tool

monitor-

ing[C].

IEEE

International

Conference

on

Robotics

and

Au

­

tomation,

1999.

Proceedings.

IEEE,

1999:1152-1157

vol.2.

[10]

Wang

S,

Shin

K

G.

Reconfigurable

software

for

open

archi

­

tecture

controllers

[C],

IEEE

International

Conference

on

Robotics

and

Automation,

2001.

Proceedings.

IEEE,

2001:

4090-4095

vol.4.

140