Last Updated: 2023-12-10 06:52:02 Sunday
-- TOC --
远程桌面与云桌面,在概念上有一些区别。远程桌面的两端一般都在内网,一般都是物理机。而云桌面的访问目标在云端,一般都是虚拟机。
记录一次成功的配置,实现了通过安装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目录。
任务属性可以设置为如下:
浏览器访问:ip:6789/vnc.html
或 ip:6789/vnc_lite.html
也可以在URL上带上密码:ip:6789/vnc.html?password=123456
Win10内置rdp server,是不是可以直接用呢?是的。
被访问的电脑,开启微软windows操作系统中的远程功能,此时,3389端口就开始监听了。
最简单直接的方法,用SSH在公网服务器上建立一个远端端口转发通道,remote port forwarding,公网服务器上的监听端口,要设置为在所有IP地址上监听。(都是SSH配置)
最后,在本地打开mstsc,输入公网IP地址和设置好的监听端口。
本质上,这个方法就是最简单直接的
内网穿透
方案,任何内网的服务端口,都可以用这种方式map到公网,当然也包括某台电脑的远程桌面端口。不仅仅是微软的RDP 3389端口,VNC的5900端口都可以,VNC通过websocket转换后的端口也是一样的。SSH隧道的问题在于,这个隧道会一直存在,除非在发起隧道的那一端kill掉隧道进程,这段的case,服务器上的那个端口,没有被一个独立的进程占用,而是被sshd进程占用(sshd的线程),因此无法直接在服务器上kill这个端口的占用。
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:
$ sudo passwd root
$ sudo vncserver :4 # root session, 5904
vncserver命令加sudo,就是root登录。此时,各种窗口打不开的问题就没有了。
其它vncserver命令参数:
$ vncserver -h
$ vncserver -kill <:number>
$ vncserver -list
$ sudo vncserver -list
这种多session模式也有好处,不同权限账户登录,不同窗口,其实是同一台host,各干各的!
还有一个坑:账户登录后被自动lock,此时输入密码,vnc窗口卡死了。强烈建议登录后,关闭自动lock功能!
整体使用体验还不错:
Remmina是Linux系统中最古老的远程桌面客户端之一。可能是你有需要时的“首选”客户端。这个自由开源的应用程序可用于 Linux,也可用于 macOS。它支持许多远程协议,如 RDP、VNC、NX、X2GO、SPICE、HTTPS 和 SSH。
本文链接:https://cs.pynote.net/sf/202202221/
-- EOF --
-- MORE --