远程桌面连接指南
概念
从远程连接您的家用/办公计算机或与他人共享您的屏幕,对远程机器进行的操控类似本地机一样。
可以完成多项功能包括:
- 鼠标键盘事件响应
- 文件传输共享
- 编辑远程电脑文件粘贴拷贝
- 邀请同事远程协助
- 从远程查看文件或运行程序
产品
Chrome 远程桌面
Chrome 远程桌面是由谷歌开发的远程桌面软件工具,它允许用户通过同样由谷歌开发的专有协议(内部称为Chromoting )远程控制另一台计算机的桌面。该协议将键盘和鼠标事件从客户端传输到服务器,通过计算机网络将图形屏幕更新转发回另一个方向。因此,此功能由主机的服务器组件和客户端组成访问远程服务器的计算机上的组件构成。该协议使用 VP8 视频编码,通过低带宽连接以高性能的方式向用户显示远程计算机的桌面(来源不可靠)说明文档
![](https://img.haomeiwen.com/i1977357/9c2a399d0c88a00e.png)
远程访问
- 您可以设置对您的 Mac、Windows 或 Linux 计算机的远程访问权限。
- 在计算机上打开 Chrome。
- 在地址栏中输入 remotedesktop.google.com/access。
- 在“设置远程访问”下,点击“下载”图标 下载网页。
- 按照屏幕上的说明下载并安装 Chrome 远程桌面。
- 您可能必须输入计算机密码才能授予 Chrome 远程桌面访问权限。系统也可能会提示您在“偏好设置”中更改安全设置。
远程支持
您可以授权他人远程访问您的计算机。他们将拥有对您的应用、文件、电子邮件、文档和历史记录的完全访问权限。
- 在计算机上打开 Chrome。
- 在屏幕顶部的地址栏中输入remotedesktop.google.com/support ,然后按 Enter 键。
- 在“获取支持”下,点击“下载”图标 下载网页。
- 按照屏幕上的说明下载并安装 Chrome 远程桌面。
- 在“获取支持”下,选择生成代码。
- 复制此代码,然后将它发送给您希望与其共用计算机的人员。
- 当对方在网站上输入您提供的访问代码时,您会看到一个包含其电子邮件地址的对话框。选择共享即可向对方授予对您的计算机的完全访问权限。
- 要想结束共享会话,请点击停止共享。
访问代码只能使用 1 次。当您与他人共用您的计算机时,系统会每 30 分钟就让您确认是否要继续共用计算机。
![](https://img.haomeiwen.com/i1977357/8910ed1e2fea74b5.png)
Chromoting
它是如何工作的
- 在主机端,一个进程以某个时间间隔定期将桌面捕获为位图。
- 它将当前位图和前一个位图之间的差异计算为一堆“脏”矩形。这是为了尽量减少发送到客户端的数据量。
- 脏矩形被进一步压缩。目前有一个“no-op”编码器和 vp8 编码器。
- 该数据被发送到客户端。
- 客户端解码数据并显示它。
通信是使用 Google 的 Jingle 协议完成的,该协议基于 XMPP,并已在 Google 的 IM 和视频聊天客户端中使用。
WebRTC
WebRTC ( Web Real-Time Communication ) 是一个免费的开源项目,通过应用程序编程接口(API)为Web 浏览器和移动应用程序提供实时通信(RTC )。通过允许直接的点对点通信,它允许音频和视频通信在网页内工作,无需安装插件或下载本机应用程序
Microsoft
windows系统自带了远程桌面的功能,使用的底层协议是RDP(Remote Desktop Protocol)
![](https://img.haomeiwen.com/i1977357/4cf88f4a53dc612d.png)
连接步骤
- 打开要连接电脑的远程桌面设置
- 在另一台电脑打开远程桌面连接程序
- 输入ip、用户名、密码
实际操作可能会有些连接不上的问题,在网上搜索解决即可
RDP
远程桌面协议( RDP ) 是Microsoft开发的专有协议,它为用户提供图形界面以通过网络连接连接到另一台计算机。用户用于远程连接的计算机需要安装 RDP 客户端软件,而另一台被连接计算机必须运行 RDP 服务器软件。
作为 Microsoft 的私有协议,RDP 仅适用于 Windows 系统,尽管该客户端适用于几乎所有操作系统,大多数版本的Microsoft Windows(包括Windows Mobile)、Linux、Unix、macOS、iOS、Android和其他操作系统都存在客户端。
RDP 服务器内置于 Windows 操作系统中,在设置中打开远程连接开关后会自动开启此服务,可以到计算机->管理->服务下查看服务是否启动。默认情况下,服务器侦听TCP 端口3389 和UDP端口 3389。
![](https://img.haomeiwen.com/i1977357/c4f5726e3c91fed8.png)
如果有连接不上情况也可以到此页面排查,查看服务是否“正在运行”状态,没有需要关闭禁用,并运行服务
RDP 的基本功能是将监视器(输出设备)从远程服务器传输到客户端,并将键盘和/或鼠标(输入设备)从客户端传输到远程服务器。 RDP 连接期间的数据传输将非常不对称,因为大部分数据将从服务器传输到客户端。
在我们了解 RDP 连接的实际工作原理之前,先看下RDP 所依赖的协议/标准。 RDP 协议栈如下所示:
![](https://img.haomeiwen.com/i1977357/28933b69c6fecd5f.png)
- TPKT 被称为 TCP 之上的 ISO 传输服务。 TPKT 使对等方能够交换称为传输协议数据单元(TPDU 或 PDU)的信息单元。
- X.224 是一种面向连接的传输协议,它提供一种连接模式的传输服务。 RDP 在初始连接请求和响应中使用它。
- T.125 MCS 是一种多点通信服务。它允许 RDP 通过和管理多个通道进行通信。
通过 RDP 栈发送和接收数据本质上与 7 层 OSI 模型进行通信相同。传输的数据被分段、定向到一个通道、加密、打包、成帧和分包,然后通过线路传输到另一方,然后反向执行相同的过程。了解更多
外网访问
当你使用远程桌面客户端连接到你的电脑时,将创建对等连接。 这意味着你需要直接访问电脑(有时称为“主机”)。 如果需要从运行电脑所在的网络外部连接到电脑,则需要启用该访问。 你有两种选择:使用端口转移或设置 VPN
![](https://img.haomeiwen.com/i1977357/e652932acb5a3488.png)
MAC
您可以使用屏幕共享在离开时访问您的 Mac,在其他人的 Mac 上解决问题,或者就网站或演示文稿等项目与其他人展开协作。
如果在 Mac 上启用了屏幕共享,则可以从网络上的其他 Mac 查看您的 Mac 桌面。共享屏幕后,其他 Mac 的用户就可以查看您屏幕上的内容,可以打开、移动和关闭文件和窗口,打开 App,甚至重新启动 Mac。参考链接
打开屏幕共享
1、点击“系统偏好设置”,然后点按“共享”
![](https://img.haomeiwen.com/i1977357/598191473664f548.png)
2、选中Screen Sharing
3、在另一台电脑浏览器输入vnc://xxx.xxx.xx.x
4、输入登录用户名密码登陆
![](https://img.haomeiwen.com/i1977357/51ed7800695be50b.png)
VNC
VNC(Virtual Network Computing)虚拟网络计算是一种图形桌面共享系统,它使用远程帧缓冲协议 (RFB)来远程控制另一台计算机。它将键盘和鼠标输入从一台计算机传输到另一台计算机,通过网络传递图形屏幕更新。
使用它可用控制远程计算机,同时,远程用户也可以观看和交互,它是基于像素的,这意味着它比 RDP 更灵活。 VNC 是平台无关的,这意味着它可以很容易地跨 Mac、Windows、Linux、Raspberry Pi 和其他平台使用,在不同的计算机之间共享一个桌面,并且使用 VNC 应用程序连接到不同计算机上的不同计算机没有限制平台,多个客户端可以同时连接到 VNC 服务器。该技术的流行用途包括远程技术支持和从家庭计算机访问工作计算机上的文件,反之亦然。
VNC各平台下载链接
VNC和RDP对比相似
- RDP 和 VNC 都允许您或您的同事从远程位置访问工作计算机。
- VNC 和 RDP 技术都需要客户端和服务器端软件来支持通信。在所有情况下,两种技术的服务器部件都需要配置为便于访问并设置凭据。
- 它们依赖点对点通信,这意味着一台计算机可以直接连接到远程计算机。
- 两者都支持支持安全访问并允许管理员管理用户的软件。
那么,从表面上看,这两种方法听起来非常相似。但它们之间的差异是惊人的。虽然他们的目标是为计算机或设备提供远程桌面功能,但不同之处在于实现目标的方式
VNC和RDP对比不同
- VNC 服务器支持多个平台,允许 Windows、Mac、Linux 和 Raspberry Pi 运行设备的共享屏幕和键盘。它们被设计用于各种操作系统。 RDP 是专有的,仅适用于一个特定的操作系统,这意味着它不是最兼容的。
- RDP 就像用户直接登录到物理服务器一样工作,并支持所有登录到同一服务器的许多远程用户。 VNC 通过共享屏幕、鼠标和键盘将用户连接到计算机本身,这样当多个用户连接到同一个服务器时,他们都可以看到相同的屏幕并在同一个键盘上打字。
- VNC 通过桌面共享系统提供强大的设备访问权限,允许用户完全控制远程计算机。这极大地提高了个人、组织和 IT 专家的工作效率。
- RDP 登录到计算机,创建一个虚拟桌面会话,以便用户可以在他们之间共享同一台计算机的资源,但这也意味着它不是一个屏幕共享平台。 VNC 是一个屏幕共享工具,它还可以让远程计算机进行控制。
- RDP 需要端口转发才能在 Internet 上使用,因此它是一项公开服务。 VNC 的云连接不是。
- VNC 更适合支持涉及故障排除或远程工作的用例
Linux
Linux下远程登陆场景,常见为后端服务器登陆,可以借助XShell、FinalShell等远程连接工具。
连接步骤
- 指定远程登陆服务器ip、端口(默认22)
- 指定登陆用户名、密码
SSH
Secure Shell(SSH) 是由 IETF(The Internet Engineering Task Force) 制定的建立在应用层基础上的安全网络协议。它是专为远程登录会话(甚至可以用Windows远程登录Linux服务器进行文件互传)和其他网络服务提供安全性的协议,可有效弥补网络中的漏洞。通过SSH,可以把所有传输的数据进行加密,也能够防止DNS欺骗和IP欺骗。还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。目前已经成为Linux系统的标准配置
SSH 是一种协议,可用于许多平台上的许多应用程序,包括大多数Unix变体(Linux、BSD ,包括Apple 的 macOS和Solaris)以及Microsoft Windows
TeamViewer
TeamViewer是一个全面的远程访问、远程控制和远程支持解决方案,适用于几乎所有桌面和移动平台,包括 Windows、macOS、Android 和 iOS。TeamViewer 可让您远程访问位于世界任何地方的计算机或移动设备,并像身临其境一样使用它们
连接步骤
- 在您要开始连接的设备上下载并安装 TeamViewer ,例如台式机或移动设备。
- 在您要访问的目标设备上安装 TeamViewer 。这可能是另一个桌面或移动设备,甚至是销售点系统、信息亭或物联网设备。
- 在传出设备上输入连接伙伴的 ID 和密码,实时连接,控制目标设备,犹如身临其境。
![](https://img.haomeiwen.com/i1977357/b311fba9e171df88.png)
三方服务器
TeamViewer、LogMeIn 和任何其他允许零配置远程桌面会话的程序都使用第三方服务器。
例如,LogMeIn 是一个类似于 TeamViewer 的程序,您可以在其中远程登录到您当前所在网络之外的计算机。您会注意到这种类型的远程会话不需要外部配置。这是因为您安装在远程计算机(LogMeIn 客户端)上的软件会向 LogMeIn 服务器发起传出请求。由于此客户端发起了请求,因此不需要防火墙上的端口转发。
在您的计算机上,在 LogMeIn 计算机的网络之外,可以通过 LogMeIn 的网站远程访问这台计算机。该网站接受来自远程计算机的发起请求,并保持连接活动以侦听远程会话请求。
当您运行 TeamViewer 时,您会在其代理服务器上分配一个 ID。您与 Teamviewer ID 建立连接,TeamViewer 通过 TeamViewer 客户端建立的隧道将连接向下传递到目的地,然后提示您输入密码,然后建立连接
Guacamole
Apache Guacamole是一个无客户端远程桌面网关。它支持标准协议,如 VNC、RDP 和 SSH。
我们称其为无客户端(clientless),因为不需要插件或客户端软件。
有了 HTML5支持,只要在服务器上安装了 Guacamole,您只需一个网络浏览器即可访问您的桌面。
作为一个开源项目,整体包含了三部分:apache/guacamole-server、apache/guacamole-client、apache/guacamole-website
连接步骤
- 服务器搭建guacamole,有两种可选方式:
- 下载guacamole-server源码编译,启动guacd
- docker命令安装(参考oznu/guacamole)
docker run \
-p 8080:8080 \
-v </path/to/config>:/config \
oznu/guacamole
启动后浏览器查看http://localhost:8080,可以看到guacamole管理页面,默认登录用户名,密码都为: guacadmin
![](https://img.haomeiwen.com/i1977357/d3bb1366ebb0ea5a.png)
- guacamole管理后台添加远程机器配置:
- 选择VNC、RDP、SSH协议
- 输入ip、port(VNC默认端口5900、RDP:3389、SSH:22)
- 登陆用户名、密码
详细文档可参考guacamole手册
![](https://img.haomeiwen.com/i1977357/23100f1efecb31da.png)
保存,回到首页,点击新添加的链接即可在浏览器完成登录远程
guacamole的优点是,只要完成一次服务器的搭建和远程机器连接配置之后,后续想要再往别的机器上远程登录就无需下载各个协议对应的客户端,只要有浏览器可以访问到guacamole服务器即可,即使是手机也可以,非常方便。
架构实现
Guacamole 不是一个独立的 Web 应用程序,它由许多部分组成。 Web 应用程序实际上旨在简单和最小化,大部分繁琐的工作由较低级别的组件执行。
![](https://img.haomeiwen.com/i1977357/4981a80f5db7342f.png)
用户使用他们的网络浏览器连接到Guacamole服务器。 Guacamole 客户端由 JavaScript 编写,通过Guacamole 服务器中的一个webserver为用户提供服务。加载后,此客户端使用 Guacamole 协议通过 HTTP 连接回服务器。
部署到 Guacamole 服务器的 Web 应用程序读取 Guacamole 协议并将其转发到 guacd,即本机 Guacamole 代理。这个代理实际上解释了 Guacamole 协议的内容,代表用户连接到任意数量的远程桌面服务器。
Guacamole 协议与 guacd 相结合提供了下层协议屏蔽:无论是 Guacamole 客户端还是 Web 应用程序都不需要知道实际使用的是什么远程桌面协议
总结
本文我们主要了解了几种常见的远程操作桌面的方式及其简单原理分析,认识了VNC、RDP、SSH等远程桌面协议,以及guacamole作为无客户端、跨协议实现的底层原理
总体来说,每种类型方式都有对应的使用场景,其中guacamole在有大量远程设备需要控制时,可以类似一个网关,并提供类似后台管理页面,点击即可连接非常方便,并且又是开源项目,前端可自定义样式。但是由于底层还是基于点对点的标准协议,仍然需要在同一网段才能访问,并且需要登录凭证的特点,对于远程登录客户电脑提供协助的情景并不是非常适用
参考
https://guacamole.apache.org/
https://guacamole.apache.org/doc/gug/introduction.html
https://www.realvnc.com/en/blog/vnc-vs-rdp-which-remote-desktop-tool-is-best/
https://www.cyberark.com/resources/threat-research-blog/explain-like-i-m-5-remote-desktop-protocol-rdp
https://www.miniorange.com/google-chromoting-remote-desktop-management
https://remotedesktop.google.com/