当前位置: 首页 > news >正文

基于VNC远程连接服务器以及容器(获取图形化界面)

目录

1. VNC远程连接服务器的步骤:

1.1.服务器安装VNC服务(TigerVNC)

1.2. 启动VNC服务,创建桌面会话

1.3. SSH 登录到服务器,

1.4. 重置VNC 密码

1.5. 客户端连接

1.6. 关闭 / 清理 stale VNC

2. VNC远程连接服务器的容器

2.1 容器内安装GUI桌面环境以及创建会话

2.2 用“端口转发”实现连接

3. SSH和VNC方法比较

3.1. SSH(含 X11 转发)

3.2. VNC / TurboVNC(+ VirtualGL)


已有问题:基于SSH方式,在linux服务器打开Isaac sim软件 GUI界面之后,发现操作界面非常卡顿,然后就基于VNC的方法连接服务器就可以解决这个问题。

1. VNC远程连接服务器的步骤:

1.1.服务器安装VNC服务(TigerVNC)

Ubuntu:

sudo apt install -y tigervnc-standalone-server tigervnc-common

1.2. 启动VNC服务,创建桌面会话

vncserver -geometry 1920x1080 -localhost no :1

1.3. SSH 登录到服务器,

执行:vncserver -list

看到类似输出:

1.4. 重置VNC 密码

vncserver -kill :1 # 先关掉原来的会话 rm -f ~/.vnc/passwd # 删除旧密码文件(可选,但保险) vncpasswd # 重新设置一个简单的 VNC 密码,例如: 12345678

vncpasswd的时候:

  • 输入两遍新密码(建议只用数字/字母,长度 ≤ 8,先不要用复杂符号)

  • 询问 “view-only password?” 直接输入n回车

再重新启动 VNC:

vncserver -geometry 1920x1080 -localhost no :1 vncserver -list # 再看一眼,确认 :1 已经起来

1.5. 客户端连接

本地 Windows 机器:安装TurboVNC ViewerRealVNC Viewer或者MobaXterm

连接地址填:服务器IP:1服务器IP::5901

弹出认证窗口时,密码填刚才vncpasswd设置的那个。

连上后就能看到服务器桌面,在里面打开终端、运行 Isaac Sim 等程序了。

1.6. 关闭 / 清理 stale VNC

如果显示stale,表示VNC 会话已经死掉,但残留的 pid / lock 文件还在,所以系统以为 session 还存在。

(1)先确认没有真正的 VNC 进程

ps -ef | grep Xtigervnc

如果只看到grep,说明确实没有运行中的 VNC。

(2)删除相关残留文件
删除.vnc残留

ls ~/.vnc

删除 pid 和 log:

rm -f ~/.vnc/*.pid rm -f ~/.vnc/*.log

(3)再查看

vncserver -list

如果正常,stale就消失了。

2. VNC远程连接服务器的容器

首先在服务器里进入容器内部

2.1 容器内安装GUI桌面环境以及创建会话

1. 安装相关软件

apt update apt install -y dbus-x11 xfce4 xfce4-session

2. 配置 VNC 启动脚本

vim /root/.vnc/xstartup 添加以下内容:

#!/bin/sh unset SESSION_MANAGER unset DBUS_SESSION_BUS_ADDRESS # 1) TigerVNC 正常会传入 DISPLAY(比如 :1 / :2) # 2) 如果没传入,就从该会话的端口/环境推不出来的话,兜底用 :2 : "${DISPLAY:=:2}" export DISPLAY export XDG_SESSION_TYPE=x11 export XDG_RUNTIME_DIR=/tmp/runtime-root mkdir -p "$XDG_RUNTIME_DIR" chmod 700 "$XDG_RUNTIME_DIR" exec dbus-launch --exit-with-session xfce4-session

保存后:
chmod +x /root/.vnc/xstartup

删除相关:
vncserver -kill :2 # 杀死原有桌面会话2
rm -f /root/.vnc/*:2.pid /root/.vnc/*:2.log

重新创建会话
vncserver -geometry 1920x1080 -localhost no :2
vncserver -list # 显示如下,代表VNC桌面会话创建成功

2.2 用“端口转发”实现连接

当前方法适用于容器已经创建,容器里 已经启动VNC
1)找到容器 IP

docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' 容器名

假设输出是 172.17.0.3

2)在服务器上做端口转发(把服务器 5902 转到容器 5902)

退出容器,进入到服务器中,采用socat进行标准端口映射

sudo apt install -y socat sudo socat TCP-LISTEN:5902,fork TCP:172.17.0.3:5902 # TCP-LISTEN:5902代表服务器的端口,172.17.0.3:5902代表容器IP以及VNC会话端口

注意执行sudo socat TCP-LISTEN:5902,fork TCP:172.17.0.3:5902之后,不要关闭终端或者ctrl+z ,会断开连接(但是进程还在),否则VNC客户端无法连接

ctrl+z 断开连接后,可以用 下述命令继续跑

fg %4

杀死socat进程

sudo ss -lntp | grep ':5902' sudo kill -9 pid

一切完毕后,然后 Windows 端通过下述方式,就可以连接上容器
连接地址填:服务器IP:2服务器IP::5902

注意:这里的服务器的5902端口会指向容器的5902端口

3. SSH和VNC方法比较

简单说一句:
SSH 用来“远程敲命令”,VNC 用来“远程看整个桌面”
跑 Isaac Sim 这种 3D GUI,基本就是:SSH + VNC(或 TurboVNC+VirtualGL / DCV),而不是 SSH X11 转发


3.1. SSH(含 X11 转发)

优点: 适合:命令行、脚本、日志、轻量 GUI(小对话框那种)。

缺点(关键)

  • X11 转发非常不适合 3D / 大量图形:

    • 每一帧都要把图像/绘图指令通过 SSH 传回本地,延迟大、带宽占用高。

    • Isaac Sim、Blender 这类 GPU 渲染程序几乎一定会“动一下就 1–5 FPS”。

3.2. VNC / TurboVNC(+ VirtualGL)

特点:

  • 服务端跑一个完整桌面会话(:1 → 5901)。
  • 更适合 3D 应用:

    • 渲染在服务器 GPU 上完成,只把压缩后的画面传回来。

    • TurboVNC + VirtualGL / NICE DCV 这类方案,性能比 X11 转发好一个数量级。

  • 能看到完整桌面环境

缺点

  • 需要额外安装/配置 vncserver、xstartup 等。

结论:

  • SSH:继续做日常开发、上传下载、跑脚本。

  • VNC / TurboVNC:专门用来进服务器“看桌面 + 跑 Isaac Sim GUI”。

http://www.jsqmd.com/news/489137/

相关文章:

  • 图文编辑新革命:InstructPix2Pix如何实现指令式图片修改?
  • how-to-npm进阶技巧:提升你的npm开发效率
  • RMBG-1.4镜像免配置亮点:AI净界预装OpenCV+Pillow+Gradio开箱即用
  • Janus-Pro-7B开箱即用:Ollama预编译镜像省去CUDA/PyTorch配置烦恼
  • claude-code-best-practiceWeb开发:AI辅助构建现代Web应用的完整指南
  • Ubuntu下sudo的免密操作
  • MGeo中文地址结构化教程:地址别名识别(如‘国贸’=‘建国门外大街1号’)与标准化映射
  • 海景美女图-一丹一世界FLUX.1快速上手:移动端访问+英文提示词模板库(含翻译技巧)
  • 机器视觉光源技术深度解析:行业现状与创新趋势
  • 5分钟掌握Sneat布局系统:容器、流体与响应式设计实战技巧
  • 影墨·今颜图文教程:从Prompt输入到朱砂敕令的完整生成流程
  • Nunchaku-FLUX.1-dev本地化部署ROI:3个月回本的AI绘画工作室案例
  • ESP-SR语音合成功能全解析:从文本到自然语音的实现方案
  • ZEMAX学习过程中的领会
  • Nano-Banana应用场景:产品工程师快速生成维修拆解指引示意图
  • 雯雯的后宫-造相Z-Image-瑜伽女孩部署案例:中小企业健身App素材自动生成方案
  • AST Types进阶:Scope对象与变量作用域分析
  • Qwen3-TTS-1.7B-Base实际效果展示:多语种新闻播报与AI助手语音对比
  • OpenResty Manager核心功能全解析:从SSL自动续期到DDoS防护的完整指南
  • 工业检测光源迎来“白菜价“时代?思奥特220×220面光源实测揭秘
  • Qwen3-Reranker-0.6B实战教程:集成进LangChain+LlamaIndex RAG流水线
  • 文墨共鸣效果展示:宣纸色调下墨韵留白UI与高精度语义评分的视觉统一
  • CLIP-GmP-ViT-L-14图文匹配工具代码实例:扩展支持JSON批量测试与CSV导出
  • DAMO-YOLO手机检测系统服务网格化:Istio流量治理实践
  • DeOldify镜像交付规范:符合OCI标准的容器打包与Harbor仓库推送
  • PostgreSQL表空间优化:pg-utils中SSD迁移工具使用详解
  • 丹青识画GPU显存优化:梯度检查点+FlashAttention内存节省55%
  • 开源AI图像编辑新标杆:Anything to RealCharacters 2.5D转真人引擎技术白皮书导读
  • Qwen3-0.6B-FP8实战教程:Chainlit中添加vLLM生成结果的评分与反馈收集
  • 一站式掌握npm:how-to-npm全方位学习资源汇总