VNC连接服务器实现远程桌面 --以AutoDL云服务器为例
针对本地机为Windows
云服务器租显卡跑些小模型很方便,但是当你想做可视化的时候,可能会遇到麻烦,云服务器没有显示输出界面,无法可视化一些检测任务的结果,或者可以下载结果到本地搭建环境跑可视化推理,但是,有些项目的可视化在win下不好安装依赖包
所以使用远程桌面连接云服务器,相当于本地以可视化界面直接操作云服务器
进入实例,打开终端,安装桌面环境
官方文档:远程桌面
Step.1
依次执行下列语句
更新工具:
apt-get update && apt-get upgrade -y
安装桌面:
apt-get install xorg xdm xfce4
安装依赖:
# 安装基本的依赖包
apt update && apt install -y libglu1-mesa-dev mesa-utils xterm xauth x11-xkb-utils xfonts-base xkb-data libxtst6 libxv1
# 安装libjpeg-turbo和turbovnc
export TURBOVNC_VERSION=2.2.5
export LIBJPEG_VERSION=2.0.90
wget http://aivc.ks3-cn-beijing.ksyun.com/packages/libjpeg-turbo/libjpeg-turbo-official_${LIBJPEG_VERSION}_amd64.deb
wget http://aivc.ks3-cn-beijing.ksyun.com/packages/turbovnc/turbovnc_${TURBOVNC_VERSION}_amd64.deb
dpkg -i libjpeg-turbo-official_${LIBJPEG_VERSION}_amd64.deb
dpkg -i turbovnc_${TURBOVNC_VERSION}_amd64.deb
#删除安装包
rm -rf *.deb
# 启动VNC服务端,这一步可能涉及vnc密码配置(注意不是实例的账户密码)。另外如果出现报错xauth未找到,那么使用apt install xauth再安装一次
#在6006端口启动VNC服务端
USER=root /opt/TurboVNC/bin/vncserver :1 -desktop X -auth /root/.Xauthority -geometry 1920x1080 -depth 24 -rfbwait 120000 -rfbauth /root/.vnc/passwd -fp /usr/share/fonts/X11/misc/,/usr/share/fonts -rfbport 6006
# 检查是否启动,如果有vncserver的进程,证明已经启动
ps -ef | grep vnc
# 如果再次启动,删除上一次的临时文件,否则无法正常启动
rm -rf /tmp/.X1*
Step.2
以上启动Server时,手动设置了rfbport=6006端口,下面通过SSH隧道将实例中的6006端口代理到本地
实例中启动服务,上面已完成
在本地电脑的终端(cmd / powershell / terminal等)中执行代理命令:
ssh -CNg -L 6006:127.0.0.1:6006 root@123.125.240.150 -p 42151
需要改格式,根据自己的实例访问地址和端口改,相应替换
这个地方复制查询
SSH指令复制出来为形如该格式的命令:ssh -p 48332 root@region-3.autodl.com
在ssh -p 48332 root@region-3.autodl.com命令中, 各个参数的含义为:
用户名:root
主机host: region-3.autodl.com
端口号:48332
按照格式改成比如:sh -CNg -L 6006:127.0.0.1:6006 root@connect.beijinga.seetacloud.com -p 88888
关闭后重启也是这条指令
执行完这条ssh命令,没有任何日志是正常的,只要没有要求重新输入密码或错误退出
保持输入该命令后Terminal的开启状态,关闭后会杀掉进程,导致VNC Viewer登陆失败
VNCviewer使用
下载地址
完成上述步骤后使用vnc客户端连接,地址请填写:127.0.0.1:6006
可以直接本地以图形界面操控云服务器
可能的问题解决方案:
1、黑屏:可能没有自动启动桌面,start xfce4
启动桌面,另外需要先执行export DISPLAY=:1
,在启动桌面
2、关服务器前最好关闭服务,ps -ef | grep vnc
,查看vnc进程,通过指令kill -9 xxxxx
来强制杀死该进程,再执行ps -ef | grep vnc
确认vncserver的进程已经关闭,xxxxx为进程号,替换