文章目录
- 1.安装VNC和必要的一些图形显式库:
- 2.SSH隧道
- 2.1.本地安装openssh服务器
- 2.2.服务开启
- 2.3.显示当前安装的 SSH 版本信息
- 2.3.设置一个 SSH 隧道
- ==注意
- 3.VNC Viewer客户端登录
- 4.测试
- 5.参考
VNC(Virtual Network Computing )是一种图形化的桌面共享协议,它使用远程帧缓冲协议 (RFB) 来远程控制另一台计算机,它将键盘和鼠标事件从一台计算机传输到另一台计算机,通过网络向另一个方向转发图形屏幕更新。 对于一般性的GUI程序运行需求,我们其实可以借助VNC在不安装完整桌面环境的情况下方便快捷的实现,下面介绍如何借助turbovnc工具,在实例中运行一个GUI程序并在本地电脑进行显示:
1.安装VNC和必要的一些图形显式库:
# 安装基本的依赖包
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再安装一次
rm -rf /tmp/.X1* # 如果再次启动,删除上一次的临时文件,否则无法正常启动
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
注意:启动VNC服务
root@autodl-container-011d409f64-3952354b:~# ps -ef | grep vnc
root 1191 1129 0 19:49 pts/0 00:00:00 grep --color=auto vnc
root@autodl-container-011d409f64-3952354b:~# rm -rf /tmp/.X1*
root@autodl-container-011d409f64-3952354b:~# ps -ef | grep vnc
root 1197 1129 0 19:49 pts/0 00:00:00 grep --color=auto vnc
root@autodl-container-011d409f64-3952354b:~# 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
Desktop 'TurboVNC: autodl-container-011d409f64-3952354b:1 (root)' started on display autodl-container-011d409f64-3952354b:1
Starting applications specified in /root/.vnc/xstartup.turbovnc
Log file is /root/.vnc/autodl-container-011d409f64-3952354b:1.log
root@autodl-container-011d409f64-3952354b:~# ps -ef | grep vnc
root 1209 1 3 19:49 pts/0 00:00:00 /opt/TurboVNC/bin/Xvnc :1 -desktop TurboVNC: autodl-container-011d409f64-3952354b:1 (root) -httpd /opt/TurboVNC/bin//../java -auth /root/.Xauthority -geometry 1920x1080 -depth 24 -rfbwait 120000 -rfbauth /root/.vnc/passwd -x509cert /root/.vnc/x509_cert.pem -x509key /root/.vnc/x509_private.pem -rfbport 5901 -fp /usr/share/fonts/X11/misc/,/usr/share/fonts -deferupdate 1 -dridir /usr/lib/x86_64-linux-gnu/dri -registrydir /usr/lib/xorg -desktop X -auth /root/.Xauthority -rfbwait 120000 -rfbport 6006
root 1400 1129 0 19:49 pts/0 00:00:00 grep --color=auto vnc
root@autodl-container-011d409f64-3952354b:~#
2.SSH隧道
2.1.本地安装openssh服务器
右键此电脑→属性→应用→可选功能→添加可选功能
找到OpenSSH服务器(注意是服务器不是OpenSSH客户端)
2.2.服务开启
Win+S,键入服务,打开本地服务界面,找到OpenSSH SSH Server,启动方式改为自动
cmd或Windows PowerShell里键入net stop sshd,net start sshd 重启本地的 ssh 服务即可。
如提示下图可管理员权限运行
2.3.显示当前安装的 SSH 版本信息
ssh -V 命令在 SSH(Secure Shell)客户端中用来显示当前安装的 SSH 版本信息。这个命令提供了关于 SSH 客户端版本的详细信息,包括版本号和使用的加密库等。
OpenSSH_for_Windows_8.1p1, LibreSSL 3.0.2 表示:
- OpenSSH_for_Windows_8.1p1:这是你在 Windows 系统上使用的 OpenSSH 版本号。OpenSSH 是一种广泛使用的开源 SSH 工具,用于远程管理和安全通讯。
- LibreSSL 3.0.2:这是与 OpenSSH 配合使用的加密库版本号。LibreSSL 是一个从 OpenSSL 发展来的开源加密库,用于提供加密功能和安全通讯。
2.3.设置一个 SSH 隧道
在本地的Terminal中执行命令
ssh -CNgv -L 6006:127.0.0.1:6006 root@region-1.autodl.com -p 37881
其中6006:127.0.0.1:6006指代理AutoDL主机vncserver的6006端口到本地的6006端口,root@region-1.autodl.com -p 37881为登陆指令的访问地址与端口。
执行上述指令后需要输入登陆密码登陆AutoDL主机,保持该输入该命令后Terminal的开启状态,关闭后会杀掉进程,导致VNC Viewer登陆失败。
-C: 启用压缩选项。这有助于减少通过 SSH 隧道传输的数据量,可能会提升速度,特别是在带宽有限的情况下。
-N: 表示 SSH 客户端不执行远程命令,只用于转发端口。这在只需要端口转发而不需要执行其他命令的场景中非常有用。
-g: 允许远程主机连接到本地转发的端口。这通常在你希望其他机器能访问通过你机器转发的服务时使用。
-v: 启用详细模式,可以显示更多的调试信息。这对于诊断连接问题非常有帮助。
-L 6006:127.0.0.1:6006: 这是本地端口转发的设置。它意味着将本地计算机上的 6006 端口转发到远程机器(region-1.autodl.com)上的 127.0.0.1 地址的 6006 端口。
这样做的结果是,如果你在本地计算机上访问 6006 端口,流量将通过 SSH 隧道发送到远程机器的 6006 端口。
root@region-1.autodl.com -p 37881: 这部分是 SSH 连接的目标地址和端口。使用用户 root 连接到 region-1.autodl.com,通过端口 37881。
==注意
输入密码时最好手动输入密码
3.VNC Viewer客户端登录
在本地下载VNC Viewer客户端,在VNC Server栏输入127.0.0.1:6006,点击OK即可登陆远程桌面,这里还需要输入前面在AutoDL主机Terminal中启动VNC服务器时设置的密码。
4.测试
在终端中添加环境变量:export DISPLAY=:1,然后再执行您的命令(注意在同一终端执行)
可以使用以下python代码进行简单验证:
import numpy as np
import cv2
h = 500
w = 500
img = 255 * np.ones((h ,w , 3), dtype=np.uint8)
cv2.imshow("", img)
cv2.waitKey(0)
如果在本地的vnc client显示图片,证明安装和启动过程无误
5.参考
AutoDL帮助文档-远程桌面
关于如何实现autodl服务器的可视化桌面
AutoDL远程桌面改进(显示桌面环境)