系统自带的远程桌面
点开左下角开始菜单,你能看见一个远程协助的应用。
但是这个东西约等于是个残废。不知道用的什么协议,不知道它用的什么端口(通过netstat发现其用的是49214端口,但不确定是否是固定端口),也不知道它有没有windows上的客户端,基本上就限死了只能uos系统间互访,一点也不生态开放。
当然,在Linux上面想要远程桌面,还有vnc协议。在linux各发行版的镜像源里面也能找到vnc的server端实现,例如x11vnc server, tiger vnc。但是vnc先不说好不好用,在uos上能不能用就是个大问题。
要么是兼容性问题,要么是麻烦复杂的配置。即使是Linux膏手,恐怕宁愿用ssh访问自己的uos机子,都不愿意用vnc。
我们需要什么
先做个需求分析,远程桌面肯定是用户自己在别处(发布室、值班室),想要访问自己工位的信创电脑。
如果用户在异地用的也是uos,那好说,用系统自带的"远程协助"便是。前面我说它残废,是对于异构平台环境而言的,uos和uos本身之间的互访,系统的"远程协助"还是值得一用的。
但是如果用户在异地的电脑不是uos,除了没图形界面的ssh和有病的vnc,是否就没有办法远程了呢。这一点就是需求分析里面急需解决的问题。
RDP远程桌面协议
Windows上远程桌面用的协议即为RDP。这个是微软专有的协议,但事实上在不同的操作系统也有对应的功能实现,包括Linux。例如Ubuntu在22版本开始,就将rdp协议的实现内置在系统中。
在使用RDP之前,建议先通过下面这条指令检查一下系统的显示服务器协议是否是x11,只有x11能够使用RDP。如果是wayland,得使用wprs协议来实现远程桌面,这个我也不熟,不在本篇的讨论范围内。
echo $XDG_SESSION_TYPE
是x11,便可以安装RDP协议的两个包。根据包名(包含xorg)猜测其应该只能运用于x11显示协议的桌面环境。
sudo apt install xrdp xorgxrdp
安装完后,不出意外的话,就可以在服务和网络端口上看到RDP服务端已经运行起来了,已经可以在别的机器上的Windows远程连过来了。不过在连接之前,建议先看看下一章节"后续问题与注意事项"。
后续问题与注意事项
根据网上教程的说法,uos开机启动后默认运行在init 5
,也就是图形界面模式,远程桌面登录过来,只会显示黑屏,没有任何内容。需要执行init 3
,将系统的运行模式切换为"多任务模式"。
事实上远程过来却是黑屏并非因为运行模式是5,而是因为一个用户只能运行一个图形桌面,无论是本机还是远程,只有一方能看到图形桌面。例如想要远程登录uos机器的admin1账户,那么本地的admin1就必须注销,不能处于登录状态,才能让远程桌面正常显示。
所以为了本地和远程都能正常使用,最优解应当是,uos上创建两个用户,一个供远程连接用,一个供本地使用。两个用户之间通过各种方式做好数据共享,例如建立共享文件夹、走网络协议(ftp, sftp, webdav)等。
在实际使用RDP中,我还遇到了一些小bug,这些bug可能因uos系统版本而异,可能在某些小补丁中修复了。没遇到最好,遇到了也不要觉得奇怪。
本地注销了用户admin1,回到锁屏界面。远程登录进来admin1,用完了,再注销。本地再登进admin1,会发现桌面底部的任务栏没了,即使通过dde-dock来启动任务栏,它也只是单纯地出现,并不会显示正在运行的程序。虽说重启电脑就能解决,但这毕竟不是个好办法。
我的同事也写了一篇远程桌面文档,不过仅在内部流传,里面关于远程桌面的问题以及关注点,我觉得这几句比我要简练扼要多了。