SDB:VNC 使用
通用
那么,什么是 VNC?
VNC 在客户端提供一个窗口,其中远程会话在服务器上运行,从实际用途上来说,这相当于坐在“服务器”前使用监视器/键盘/鼠标。
VNC 可以在服务器上使用“虚拟”显卡、键盘和鼠标。 这种形式下,您可以启动与“服务器”资源允许处理的“虚拟会话”一样多的会话。 这允许多人同时在“服务器”上工作(使用他们本地的键盘/鼠标/屏幕)。 这类似于 Windows 的“终端服务器”功能。
VNC 还可以复制真实显卡的全部内容,从而访问“服务器”上的真实屏幕(远程桌面)。 由于您可以访问物理屏幕,因此远程用户和本地用户共享此会话,并可以看到对方正在做什么。 这就是为什么这些方法用于远程支持,并称为“远程桌面共享”。
正如您所见,VNC 非常灵活,因此有很多选项,每种选项都适合不同的需求。 事实上,您甚至可以通过组合这两种方法来“远程桌面”共享 VNC 终端会话!
优缺点
- + 易于使用的网络浏览器作为客户端
- + 随大多数 Linux 发行版一起提供
- - 难以安装和使用(... 让我们不要纠结于此。)
- - 速度慢
- - 不安全
- - 难以调整到不同的客户端监视器尺寸
- - 糟糕的服务器和客户端管理(... 让我们不要纠结于此。)
安装
实现此目的最简单的方法是安装默认的 openSUSE 包“tightvnc”。
连接性
对于 VNC 客户端连接,请记住在防火墙中打开端口 5901->(每个端口/Xsession)。
对于使用 Java 的 HTTP 连接,请记住在防火墙中打开端口 5801->(每个端口/Xsession)。
默认情况下,VNC 连接将从端口 5900(或 HTTP 连接的端口 5800)开始,然后加上已启动的 Xsession 的显示编号。 例如,如果 Xsession 作为显示 :1 启动,则用于连接到此 VNC Xserver 会话的端口为 5901(或 5801),同样,如果 Xsession 作为显示 :2 启动,则端口将为 5902(或 5802)。
远程 X 登录
在这里,我们使用 VNC 设置,旨在在服务器上使用最少的资源。 这是通过在有人尝试连接之前不启动 VNC 会话,并在客户端断开连接后关闭 VNC 会话来完成的。
VNC 会话与“服务器”物理屏幕上的会话相同,它们甚至从相同的登录屏幕开始。
用户会话
在这里,我们为特定用户“预启动”vnc 会话,因此不会显示登录屏幕。 这会使用更多资源,因为即使没有客户端连接到会话观看它,VNC 会话也在运行。 但它的优势在于“观看会话”和“使用会话”不是一回事! 此方法非常适合在回家前启动长时间运行的程序。 回到家后,您可以重新连接到会话并查看事情的进展情况。
共享用户会话
在这里,VNC 用于“共享”当前用户的桌面,通过复制物理显卡的全部内容,从而访问“服务器”上的真实屏幕(远程桌面)。 由于您可以访问物理屏幕,因此远程用户和本地用户共享此会话,并可以看到对方正在做什么。 这就是为什么这些方法用于远程支持,并称为“远程桌面共享”。
由于两位用户都对桌面拥有完全控制权,因此观看相距 200 英里的两人争夺单个鼠标指针可能会很有趣。 但是,可以通过使会话“只读”来阻止这种乐趣,在这种情况下,远程用户可以看到正在发生的事情,但无法通过键盘或鼠标进行任何输入。
使用 KDE 内置的桌面共享功能
要在 KDE 中使用此功能,您应该在 YAST 中安装包“kdenetwork3-vnc”(或者如果您想使用 KDE4 版本,则安装“KDE4-krfb”)。 然后可以从命令行运行该应用程序作为“krfb”,或在 SUSE 菜单的“应用程序 - 系统 - 远程访问”下找到“桌面共享 - krfb”。
使用此应用程序将允许您的本地 Xsession 成为其他用户可以加入的共享 Xsession。 Krfb 将自动进行必要的更改并为远程用户创建加入您会话的邀请,可以通过电子邮件发送,或者让他们知道 IP 地址、屏幕编号和密码(通过其他合适的方式分配)。 请记住,如果远程连接来自外部网络,krfb 报告的 IP 地址将不正确,远程用户需要将其替换为路由器外部 IP 地址。 路由器也可能需要转发所需的端口,以便它连接到预期的 PC。 当远程用户尝试连接到共享桌面时,邀请的发起者将被要求先接受连接,并且可以选择允许完全访问或只读访问。
如果您没有运行 KDE 桌面或只是想完全控制该过程,那么您可以手动执行此操作。 这的一个例子是应用程序“x11vnc”。 这随 OpenSUSE 一起提供,但可能需要先安装。 可以从 YAST 内部轻松完成,方法是搜索然后安装包“x11vnc”。
安装完成后,您可以从命令行运行它并完全控制 Xsession 的共享方式。 有许多可用选项,如果您想调查它们,x11vnc 的 man 页面可能是最好的起点。 如果您只想让事情顺利进行,那么快速而粗糙的默认命令如下
x11vnc -usepw -ncache -display :0
分解一下,这会调用应用程序“x11vnc”,告诉它使用密码进行连接“-usepw”,启用缓存以加快速度“-ncache”,并告诉 vnc 服务器使用第一个会话“-display :0”。 这不是很花哨,甚至可以只指定显示而不指定其他任何内容,但通常最好至少使用密码。 尝试不同的压缩方法或消除一些网络流量的方法也可能会在远程端获得更快的响应。 但是,从简单开始至少可以告诉您事情是否正常工作。
请注意,默认情况下,在登录时启动的初始 Xsession 标记为显示 0。 后续会话将默认作为显示 1、2 ... 等启动。 可以使用命令“x11vnc -storepasswd actual_password /path/to/password_file”或“x11vnc -storepasswd”创建密码(如果您希望使用来自现有 VNC 安装的密码)。
您现在应该能够通过来自您内部网络中另一台 PC 的 VNC 查看器进行远程连接来测试此功能。 如果这不可行,您可以使用您自己的 PC“远程”连接到您自己的桌面。 只有在您没有其他 PC 在本地网络上使用时,才应使用此方法,因为您可能会遇到一些奇怪的屏幕行为。
使用 ssh 建立安全的 VNC 会话
如果远程机器上可用 x11vnc 和 ssh 服务,并且您希望建立一个安全的 VNC 会话来远程控制一个活动的实时桌面,请尝试使用以下两个步骤。 在一个控制台中输入以下命令,但请根据需要填写用户名和域名 -
ssh -t -L 5900:localhost:5900 loggedInUserName@computername.domain 'x11vnc -localhost -nolookup -nopw -display :0'
这建立了从您的机器到远程机器的安全加密连接。 -t 选项允许您运行基于屏幕的程序,-L 选项将您的本地 VNC 端口 (5900) 绑定到远程机器的 VNC 端口。 然后您将以远程机器上的用户身份登录,当然您会被要求输入密码。 连接后,这将启动远程机器上的 x11vnc 服务器。 传递给 x11vnc 服务器的参数允许本地主机建立连接 (-localhost),限制主机名和 IP 地址查找的方式 (-nolookup),停止有关未提供密码的警告消息 (-nopw),并连接到显示 0
接下来,从另一个控制台,在您的机器上,使用以下命令启动 vncviewer 窗口 -
vncviewer -encodings "tight copyrect hextile" localhost:0
这将连接到端口 5900,您将其绑定到远程主机端口 5900,并将您希望的编码参数 (-encodings "tight copyrect hextile") 传递给远程 x11vnc 服务器,并在您的本地显示器上显示远程桌面。
这有效地实现了与使用 KDE 工具 Krfb 和 Krdc (在 SuSE11.0,11.1 中损坏) 相同的功能,并为您提供了一个具有实时桌面的 VNC 会话。 (对系统管理员、帮助母亲等有用!) 此外,所有操作均通过安全连接完成,并且不需要对方用户执行任何操作!
共享本地 X-Windows 会话
在这里,我们设置 vnc 以允许直接访问物理显卡(X-Windows 系统),从而让我们看到/使用“服务器”上的真实屏幕。 这最常用于支持,在这种情况下,操作员不希望两个人同时在同一台机器上工作。 在这种方法中,物理位于服务器上的人可以观看远程用户正在执行的所有操作。
注意:(VNC 服务器的 Windows 版本仅支持此模式,因为 Windows 不支持虚拟屏幕)