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

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

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

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

三种协议的对比

 SPICEVNCRDP
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
打开是一个类似这样的界面,输入相关信息然后连接即可。

连接之后类似下图。

同样,中间出现的那个方框界面就是远程连接的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

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

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

 

(2)KRDC服务端

然后是KRDC,这是前面介绍的KDE桌面的远程连接软件,它同时支持RDP和VNC协议。这是它使用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完全够用了。

RDP(Remote Desktop Protocol)终端用户权限的管理设置工具,用于管理设置Windows远程桌面连接中的用户权限,有效防止RDP远程连接过程中的用户权限漏洞。 具体功能如下: 1、禁止关机、注销、禁用命令行、任务管理器、控制面板等。 2、设置用户帐号的登录时限制,过期时限制。例如只允许周一至周五的9:00~18:00登录。 3、隐藏或禁用磁盘内容,只允许运行特定的应用程序或禁止运行指定的应用程序。 该软件需要 Microsoft .NET Framework 2.0 运行环境。 Windows再爆超高危漏洞 黑客一个指令看光用户隐私 3月13日晚,微软发布了今年3月份的安全公告,共更新了6个漏洞。其中一个名为MS12-020的漏洞为超高危漏洞,黑客可利用该漏洞特别构造RDP协议包来远程控制用户电脑或服务器,该漏洞影响Windows XP、Vista、2003、win72008等主流操作系统。考虑到远程桌面服务在系统中默认打开,大量用户正在使用此服务,瑞星特此发布紧急提示,告知用户尽快安装此漏洞补丁。目前,瑞星安全助手(http://tool.ikaka.com/)已经对此次微软更新的漏洞列表提供了自动安装修复功能据介绍,MS12-020漏洞存在于Windows远程桌面协议中,如果攻击者向开启远程桌面的计算机发送一个特别构造的RDP协议包请求,那么就能对其进行远程代码执行,也就是通常上说的可对电脑进行远程控制。 瑞星安全专家表示,以往黑客通过病毒来实现对用户电脑控制的方式不同,此次漏洞导致黑客只需要发送一个协议数据包,便可以获得未安装此漏洞补丁电脑的本地最高权限,进而获取用户电脑上存储的所有资料。用户虽然可以通过关闭远程桌面服务来暂时避免受攻击,但最彻底的解决办法仍是第一时安装微软的相关漏洞补丁。 附: 微软2012年3月份安全公告地址:http://technet.microsoft.com/en-us/security/bulletin/ms12-mar MS12-020漏洞说明:http://technet.microsoft.com/en-us/security/bulletin/ms12-020 解决方案,可以通过RDP终端安全设置工具 搞定安全问题!
### 构建任务失败解决方案 当遇到 `Execution failed for task ':app:shrinkReleaseRes'` 错误时,这通常意味着资源压缩过程中出现了问题。此错误可能由多种原因引起,包括但不限于配置不正确、依赖冲突或特定于项目的其他因素。 #### 可能的原因分析 1. **ProGuard 或 R8 配置不当** ProGuard R8 是用于优化混淆代码以及减少 APK 大小的工具。如果这些工具的配置存在问题,可能会导致资源无法正常处理[^1]。 2. **重复资源** 如果项目中有多个模块定义了相同的资源名称,可能导致冲突并引发该错误。检查是否存在重名的 drawable、string 等资源文件[^2]。 3. **第三方库兼容性** 某些第三方库可能当前使用的 Gradle 插件版本或其他库存在兼容性问题,从而影响到资源打包过程中的行为[^3]。 4. **Gradle 缓存问题** 有时旧缓存数据会干扰新编译的结果,尝试清理本地仓库重新同步项目可以帮助排除此类潜在障碍[^4]。 #### 推荐的操作方法 为了有效解决问题,建议按照以下步骤逐一排查: ```bash # 清理项目构建目录 ./gradlew clean # 删除 .gradle 文件夹下的所有内容以清除缓存 rm -rf ~/.gradle/caches/ ``` 调整 `build.gradle` 中的相关设置也是一个重要环节: ```groovy android { ... buildTypes { release { minifyEnabled true // 是否启用代码缩减 shrinkResources true // 是否开启资源压缩 proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' // 尝试禁用 shrinkResources 来测试是否为资源压缩引起的错误 // shrinkResources false } } } ``` 此外,在 `proguard-rules.pro` 文件内添加必要的保留规则,防止关键类被意外移除: ```text -keep class com.example.yourpackage.** { *; } # 替换为你自己的包路径 -dontwarn androidx.**,com.google.** # 忽略警告信息 ``` 最后,确保所使用的 Android Studio 版本是最新的稳定版,并且已经应用了所有的补丁更新。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值