远程桌面

Last Updated: 2023-12-10 06:52:02 Sunday

-- TOC --

远程桌面与云桌面,在概念上有一些区别。远程桌面的两端一般都在内网,一般都是物理机。而云桌面的访问目标在云端,一般都是虚拟机。

浏览器访问VNC Server

记录一次成功的配置,实现了通过安装vncserver,用浏览器远程访问Win10桌面。

这部分的网络环境,所有设备在同一个大局域网内,虽然有划分VLan,但是相互之间IP互通。

一开始安装TightVNC server,后来测试时发现,在浏览器上常常莫名其妙的失去鼠标的位置。后改为UltraVNC server,再没发现此问题。

UltraVNC在配置DisableTrayIcon后,要重启电脑才能生效。

vncserver默认端口号是5900,可以设置两个密码,一个用于view only,一个用户remote control。还有很多其它的配置项,但是那个java viewer基本没有用,现在浏览器基本都不再支持java的applet了。

这两个都是开源项目,github上都有。解开后,我是将websockify整个目录放入noVNC目录,后者放在C盘根目录。

用Python启动websockify,建议安装numpy,速度会快一些。

通过Win10的任务计划程序,设置开机启动。

命令行为:python -m websockify --web c:\\noVNC 6789 localhost:5900,执行位置为websockify目录。

任务属性可以设置为如下:

task_attr

浏览器访问:ip:6789/vnc.htmlip:6789/vnc_lite.html

也可以在URL上带上密码:ip:6789/vnc.html?password=123456

Win10内置rdp server,是不是可以直接用呢?是的。

用mstsc通过公网访问远程桌面

被访问的电脑,开启微软windows操作系统中的远程功能,此时,3389端口就开始监听了。

最简单直接的方法,用SSH在公网服务器上建立一个远端端口转发通道,remote port forwarding,公网服务器上的监听端口,要设置为在所有IP地址上监听。(都是SSH配置

最后,在本地打开mstsc,输入公网IP地址和设置好的监听端口。

本质上,这个方法就是最简单直接的内网穿透方案,任何内网的服务端口,都可以用这种方式map到公网,当然也包括某台电脑的远程桌面端口。不仅仅是微软的RDP 3389端口,VNC的5900端口都可以,VNC通过websocket转换后的端口也是一样的。

SSH隧道的问题在于,这个隧道会一直存在,除非在发起隧道的那一端kill掉隧道进程,这段的case,服务器上的那个端口,没有被一个独立的进程占用,而是被sshd进程占用(sshd的线程),因此无法直接在服务器上kill这个端口的占用。

Linux下VNC Viewer

GNOME自带的connection可以连接VNC和RDP。VNC的连接效果不太好,tigervnc是个不错的alternative。

$ sudo dnf install tigervnc

TigerVNC 是一个自由开源的“平台中立”的 VNC协议的实现,带有客户端和服务器包。当有高性能需求时,你可以使用这个远程桌面,因为它在远程连接的 3D/视频数据方面效果最好,经过了优化。

使用经验

以下是在Linux下使用tigervnc的server,在Windows下使用tiger vncviwer的经验。

Linux下tigervnc的使用方式与Windows下的普通远程桌面不同,它是有session概念的,即用户登录看到的桌面属于一个独立的session!

开启vncserver:

$ vncserver :3  # 5903

此时,就是当前用户开启了3号session,连接端口就是5903。当前用户必须要在本地上logout,远程连接才能正常

当sudo命令也需要打开某些GUI时,可能会出现下面这样的错误:

Invalid MIT-MAGIC-COOKIE-1 keygtk initialization failed

我的解决方案就是用root登录vncviewer:

vncserver命令加sudo,就是root登录。此时,各种窗口打不开的问题就没有了。

其它vncserver命令参数:

$ vncserver -h
$ vncserver -kill <:number>
$ vncserver -list
$ sudo vncserver -list

这种多session模式也有好处,不同权限账户登录,不同窗口,其实是同一台host,各干各的!

还有一个:账户登录后被自动lock,此时输入密码,vnc窗口卡死了。强烈建议登录后,关闭自动lock功能!

整体使用体验还不错:

Remmina

Remmina是Linux系统中最古老的远程桌面客户端之一。可能是你有需要时的“首选”客户端。这个自由开源的应用程序可用于 Linux,也可用于 macOS。它支持许多远程协议,如 RDP、VNC、NX、X2GO、SPICE、HTTPS 和 SSH。

本文链接:https://cs.pynote.net/sf/202202221/

-- EOF --

-- MORE --