前言

今天来说一下远程桌面这个东西。

常用的远程桌面协议有 RDP/VNC/SPICE 三种,对比如下:

其中SPICE只用于Linux系统,我没有研究过。Linux的话真要用到图形界面的话,VNC也就足够使用了。

 

RDP

windows系统自带的远程桌面连接(mstsc),正是基于RDP协议。这一协议的特点是,被控制端图形显示方面的计算由控制端完成。

举例来说,我们知道影视行业中Houdini特效制作软件因为需要用到GPU加速,在没有显卡的设备上打开会报错提示找不到显卡驱动等。

那么这里有两个机器,A机器没有显卡,B机器有显卡和驱动。那么使用A机器,通过windows自带远程桌面连接B机器,在B机器上打开Houdini软件,会报错吗?

答案是会的,因为在这个时候,图形计算是交给A机器来做的,而A机器没有显卡,会调用CPU来完成图形运算,因此导致B机器上的Houdini软件识别不到显卡驱动,从而报错。

这里有一个小技巧,如果使用帧率(FPS)测试软件查看的话,就会发现windows远程桌面默认最高帧率是30FPS,局域网内虽然基本够用但还是有点卡顿,那么有没有办法提高到60FPS呢?

当然有,没有我说它干啥?

注册表中找到[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations]这一项,添加键值DWMFRAMEINTERVAL=15,类型是DWORD(32-位)值(D)。

然后就能享受最高60FPS的远程桌面了。

下面放一下Linux的RDP远程使用方式。

#linux上安装rdesktop,用于linux访问windws远程桌面 
#安装 
yum install rdesktop 

#如需要在界面上使用需要安装 
yum install tsclient 

#使用命令行访问,-f 全屏 -a颜色 -c L 连接类型 
rdesktop -f -a 16 119.0.0.100:1234

#使用rdp协议访问
linux yum install xrdp 

#启动xrdp服务 
xrdp 

 

VNC

而VNC协议则恰恰相反, 被控制端图形显示方面的计算由被控制端自行完成,控制端仅做实时展示和鼠标键盘等操作的传递等。

不过使用VNC远程,需要在被控制端安装VNC server端,而控制端使用VNC viewer来进行远程连接。

需要注意的是,VNC远程时,不能传输声音,无法通过远程桌面自身传输文件,流畅性相比windows的远程桌面(RDP)略逊一筹。

那么再回到上面那个例子,假如A机器使用VNC远程B机器,这时就能正常打开和使用Houdini了。

这里有一个坑,在为被控制端安装VNC server端时,如果使用windows远程桌面(RDP)远程安装的话,安装过程中会报错,原因也是因为调用了控制端的图形计算。

那如果被控制端是个虚拟设备,无法连接显示设备,只能远程那怎么办呢?

下面这个CMD命令就是答案。

@%windir%\system32\tscon.exe 0 /dest:console
@%windir%\System32\tscon.exe 1 /dest:console
@%windir%\System32\tscon.exe 2 /dest:console
@%windir%\System32\tscon.exe 3 /dest:console
@%windir%\System32\tscon.exe 4 /dest:console

原理很简单,既然需要本地图形计算,那就让被控制端自己登陆生成桌面,踢掉当前远程用户。

简单来说,管理员身份打开一个CMD窗口,鼠标复制上面这些命令,最后面多复制一个换行,在VNC server安装到正式安装时(也就是安装选项都确认完后,点击按钮开始安装时),在按下安装按钮之后,右键粘贴到CMD窗口中(因为有换行符,因此会自动执行)。

这个过程必须足够快,也许迟疑两三秒就会导致安装失败,那就只能多试几次了。是的,考验手速的时候到了。

之后你的windows远程桌面就会被这几行命令关闭(实际是因为被控端自己登陆桌面导致被挤掉) ,然后可以泡杯咖啡之类,等个五六分钟再连接上看看安装是否成功。因为安装过程中连接windows远程也会导致安装失败,所以建议多等几分钟。

VNC server安装后需要激活,这里直接放上激活码吧,省去注册麻烦了。

BQ24G-PDXE4-KKKRS-WBHZE-F5RCA
BQ24G-PDXE4-KKKRS-WBHZE-F5RCA
8ZEZH-QPANM-NX3A5-8C4TS-8B97A
7AB4X-3YNXF-C5MRR-59DJG-7HGNA
UPL8P-CN2MT-85ERA-N3E3B-GERDA
X24XP-V247M-HEMNV-ZTMZK-FNB7A 

下面放一下Linux上VNC安装和设置。

#安装 
yum install tigervnc-server  
  
#vnc服务器启动 
vncserver  
  
#查看连接 
vncserver  -list  
 
#修改访问密码 
vncpasswd    

#关闭vncserver 
vncserver -kill :n

#配置文件修改  
vim /etc/sysconfig/vncservers 
  
# VNCSERVERS="2:myusername"   sessionnumber,用户名 
# VNCSERVERARGS[2]="-geometry 800x600 -nolisten tcp -localhost" VNCSERVERS="1:root" 
# display port and username 
VNCSERVERARGS[1]="-geometry 800x600 -nolisten tcp -nohttpd" 

最后再放一个小技巧吧,当你用windows远程桌面远程搭建Thinkbox(就是那个拥有deadline农场管理软件和krakatoa等知名特效插件的公司)家的license服务器一直注册失败时,试试用VNC远程搭建,会有惊喜哦。

至于原因,我想是因为它在读取显示相关的设备的硬件ID之类用于计算注册码吧。

 


时间会带你去最正确的人身边,

请先好好爱自己,

然后那个还不知道在哪里的人,

会来接你。

《岁月的童话》

——高畑勋