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
运行时建立的一个平台
,
实
际上它是对
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


发布评论