欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

详解远程桌面协议, Linux 和 Windows 间的远程桌面互相访问(RDP、VNC协议)

程序员文章站 2024-03-18 17:10:46
...

前言:远程协议有很多,本文只讨论几种主要的,另外由于Windows之间的远程桌面工具实在是太多了,这里就不再说明,主要以Windows和Linux之间的互相访问来说明。

一、常见的远程协议及特点

目前常用的协议有VNC/SPICE/RDP三种,就在这里做一个简单的介绍。

三种协议的对比

  SPICE VNC RDP
BIOS屏幕显示 不能
全彩支持
更改分辨率
多显示器 多显示器支持(高达4画面) 只有一个屏幕 多显示器支持
图像传输 图像和图形传输 图像传输 图像和图形传输
视频播放支持 GPU加速支持 不能 GPU加速支持
音频传输 双向语音可以控制 不能 双向语音可以控制
鼠标控制 客户端服务器都可以控制 服务器端控制 服务器端控制
USB传输 USB可以通过网络传输 不能 USB可以通过网络传输

 

RDP: Remote Desktop Protocol

VNC: (Virtual Network Console)是虚拟网络控制台的缩写

更加推荐使用VNC协议

二、RDP协议

2.1 Linux远程控制Windows电脑

(1)方法一:Linux上通过安装rdesktop控制Windows

首先要介绍的一个工具是Rdesktop,它实现了RDP协议,允许我们在Linux系统上远程登录Windows系统。以深度系统为例,安装Rdesktop使用下面的命令。

sudo apt install rdesktop
安装完成之后,使用类似下面的命令来访问远程Windows系统。
rdesktop -g 1440x900 -P -z -x l -r sound:off -u windowsuser 192.168.31.100:3389
登录之后界面类似下面这样。当然对应的Windows系统别忘了开启允许远程连接到本计算机,否则用什么客户端也是无法连接的。如果连接有问题,在Windows上取消“仅允许运行使用网络级别身份验证的远程桌面的计算机连接”选项。

上图中,中间的那个界面就是远程连接的Windows桌面了,当然可以更改它的分辨率大小。

rdesktop 软件的参数解释

下面简单解释一下这些参数意义。

参数 意义
-g 后面代表要使用的分辨率
-P 启用位图缓存
-z 启用RDP数据流压缩
-x l 使用局域网级别的图像质量
-r sound:off 关闭声音
-u windowuser 指定要使用的用户
IP地址 要连接的计算机的IP地址和端口号

特别提一下,如果希望使用全屏方式来远程登录,可以在-g参数那里使用100%。如果需要更详细的使用说明,请用man rdekstop查询自带的帮助页面。

 

(2)方式二:通过grdesktop来控制远程Windows(图形化界面)

当然,命令行方式使用有些时候还是比较麻烦的。对于Rdesktop来说自然也有对应的图形化前端工具,grdesktop就是一个不错的工具,它是Gnome桌面的远程登录前端。我们可以使用下面的命令来安装。

sudo apt install grdesktop
打开是一个类似这样的界面,输入相关信息然后连接即可。

详解远程桌面协议, Linux 和 Windows 间的远程桌面互相访问(RDP、VNC协议)

连接之后类似下图。

详解远程桌面协议, Linux 和 Windows 间的远程桌面互相访问(RDP、VNC协议)

同样,中间出现的那个方框界面就是远程连接的Windows系统桌面。

 

(3)方式三:krdc连接Windows远程桌面

krdc是KDE桌面的rdp和vnc连接工具。我们使用下面的命令安装krdc.

sudo apt install krdc

这里具体的连接截图就不展示了,krdc也是Linux中的带有GUI界面的软件,直接启动打开即可。

注意:远程连接两端的电脑都需要安装相应的软件哦,上面使用的由于是RDP协议,而且Windows是本身就带有RDP软件的,所以不再需要额外再window上面安装什么软件了,只需要在Linux上面安装对应的支持RDP协议的软件即可。

 

2.2 Windows远程控制Linux

通过RDP协议,Windows远程控制Linux的时候,Windows同样不需要安装什么,只需要早Linux上安装对应的软件即可,即所谓的RDP服务器。

(1)Linux安装xrdp (RDP服务器)

前面的rdesktop工具可以让我们在Linux系统上远程桌面登录Windows系统,如果反过来,希望在Windows上用RDP协议远程登录到Linux系统,就比较麻烦了。这就需要xrdp来帮助我们了。它是一个RDP服务端,可以让我们用远程桌面方式登录到Linux系统。

首先要安装xrdp。

sudo apt install xrdp

然后启动xrdp服务(要启动RDP协议的服务才行哦,其实和前面的Windows要允许远程访问是一样的)

sudo systemctl enable xrdp
sudo systemctl start xrdp

现在你应该可以使用Windows自带的远程桌面工具来连接到Linux系统了。

总结:

以上就是关于使用RDP协议的一些工具的介绍。从截图上,我们可以看到,RDP协议的一个缺点,就是如果平台不同的话,显示效果其实是很差的。我这还是局域网的两台电脑,假如间隔距离更长,效果会更差。RDP协议还是在Windows间使用比较适合。跨平台的话,还是下面介绍的VNC协议更加强大。

 

三、VNC协议

3.1 Linux上的VNV服务端软件——tigervnc和x11vnc

先来说说Linux上的VNC服务端,比较常用的就是tigervnc和x11vnc。x11vnc可以让远程访问者控制本地的实际显示器,而tigervnc既可以远程控制实际显示器,还可以控制平行独立于当前物理显示器的虚拟显示器。不过由于在我的笔记本上测试tigervnc没有成功,所以这里我只介绍一下x11vnc。如果想要了解tigervnc的详细信息,可以参考一下 ArchWiki TigerVNC。

https://wiki.archlinux.org/index.php/TigerVNC#Installation

首先用下面的命令安装x11vnc。

sudo apt install x11vnc

安装好之后就可以启动了,启动也很简单,-passwd参数指定密码,-forever参数指定这个会话始终开启。

x11vnc -passwd PASSWORD -display :0 -forever

开启之后就可以使用客户端进行连接了,默认端口号是5900,会在终端中显示出来。

 

3.2 Linux上的VNC客户端

Linux上的VNC客户端软件选择就比较丰富了,各大Linux桌面系统都推出了自己的VNC客户端。我们可以根据自己需要来使用。

(1)Vinagre客户端

首先介绍一下Vinagre,这是Gnome桌面环境的远程桌面客户端,同时支持SSH、RDP和VNC协议。使用下面的命令安装Vinagre。

sudo apt install vinagre

软件打开的界面如图所示。

详解远程桌面协议, Linux 和 Windows 间的远程桌面互相访问(RDP、VNC协议)

这是连接效果图,这是用VNC协议连接到我的Windows系统。

详解远程桌面协议, Linux 和 Windows 间的远程桌面互相访问(RDP、VNC协议)

 

(2)KRDC服务端

然后是KRDC,这是前面介绍的KDE桌面的远程连接软件,它同时支持RDP和VNC协议。这是它使用VNC的连接效果图。

详解远程桌面协议, Linux 和 Windows 间的远程桌面互相访问(RDP、VNC协议)

 

(3)Remmina服务端

最后是Remmina,它也同时支持RDP和VNC协议。我们可以用下面的命令安装它。

sudo apt install remmina

 

3.3 Windows上的VNC软件

前面介绍了Linux上一些支持VNC协议的软件。在Windows上同样有一些支持VNC协议的软件,常用的有RealVNC(收费)、UltraVNC(免费)和TightVNC(免费),它们同时既是服务端又是客户端。这三个软件我都试了一下,感觉免费的TightVNC效果不错。收费的RealVNC和TeamViewer差不多,主要功能都在云端协作这方面,如果只是单纯的远程连接,TightVNC完全够用了。