deepfacelab中文网

 找回密码
 立即注册(仅限QQ邮箱)
查看: 185|回复: 0

远程服务器不能链接X Server问题

[复制链接]

2

主题

2

帖子

56

积分

高级丹童

Rank: 2

积分
56
 楼主| 发表于 2024-8-15 17:11:21 | 显示全部楼层 |阅读模式
星级打分
  • 1
  • 2
  • 3
  • 4
  • 5
平均分:NAN  参与人数:0  我的评分:未评
本帖最后由 jmx 于 2024-8-15 17:24 编辑

远程服务器不能链接X Server问题
远程桌面在imshow时, 出现: cannot connected to x server.常用解决办法是将opencv中imshow改为imread保存图片后再浏览, 但如果imshow涉及交互我们又应该怎么办呢?
这里先简单介绍一下VNC. VNC(Virtual Network Computing)是一种图形化的桌面共享协议,它使用远程帧缓冲协议 (RFB) 来远程控制另一台计算机,它将键盘和鼠标事件从一台计算机传输到另一台计算机,通过网络向另一个方向转发图形屏幕更新。对于一般性的GUI程序运行需求,我们其实可以借助VNC在不安装完整桌面环境的情况下方便快捷的实现
1.安装有关依赖
  1. # 安装基本的依赖包
  2. apt update && apt install -y libglu1-mesa-dev mesa-utils xterm xauth x11-xkb-utils xfonts-base xkb-data libxtst6 libxv1

  3. # 安装libjpeg-turbo和turbovnc
  4. export TURBOVNC_VERSION=2.2.5
  5. export LIBJPEG_VERSION=2.0.90
  6. wget http://aivc.ks3-cn-beijing.ksyun ... peg-turbo-official_${LIBJPEG_VERSION}_amd64.deb
  7. wget http://aivc.ks3-cn-beijing.ksyun.com/packages/turbovnc/turbovnc_${TURBOVNC_VERSION}_amd64.deb
  8. dpkg -i libjpeg-turbo-official_${LIBJPEG_VERSION}_amd64.deb
  9. dpkg -i turbovnc_${TURBOVNC_VERSION}_amd64.deb
  10. rm -rf *.deb
复制代码
  1. # 注意, 此处代码每次登录云主机都要运行, 否则不一定能连上
  2. # 启动VNC服务端,这一步可能涉及vnc密码配置(注意不是实例的账户密码)。另外如果出现报错xauth未找到,那么使用apt install xauth再安装一次
  3. rm -rf /tmp/.X1*  # 如果再次启动,删除上一次的临时文件,否则无法正常启动
  4. 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

  5. # 检查是否启动,如果有vncserver的进程,证明已经启动
  6. ps -ef | grep vnc
复制代码


以上启动Server时,手动设置了rfbport=6006端口,下面通过SSH隧道将实例中的6006端口代理到本地
2. SSH隧道
win用户可以直接使用图形工具.这里, 我采用SSH代理命令.
ssh -CNg -L 6006:127.0.0.1:6006 root@123.125.240.150 -p 42151
其中root@123.125.240.150和42151分别是实例中SSH指令的访问地址与端口,请找到自己实例的ssh指令做相应替换。6006:127.0.0.1:6006是指代理实例内6006端口到本地的6006端口。
(注意:执行完这条ssh命令,没有任何日志是正常的,只要没有要求重新输入密码或错误退出, Windows下的cmd/powershell如果一直提示密码错误,是因为无法粘贴,手动输入即可(正常不会显示正在输入的密码))
3. 使用
  • 首先, 本地先下载turbovnc客户端进行连接:
    1. ubuntu: http://aivc.ks3-cn-beijing.ksyun.com/packages/turbovnc/turbovnc_2.2.5_amd64.deb
    2. MacOS: http://aivc.ks3-cn-beijing.ksyun.com/packages/turbovnc/TurboVNC-2.2.5.dmg
    3. Windows: http://aivc.ks3-cn-beijing.ksyun.com/packages/turbovnc/TurboVNC-2.2.5-x64.exe
    复制代码

  • 打开cmd, powershell等, 输入ssh -CNg -L 6006:127.0.0.1:6006 root@123.125.240.150 -p 42151, 然后输入远程主机密码
  • 注意: (root@123.125.240.150和42151根据主机的不同做相应的修改)
  • 安装完毕后, 在云主机输入:

      1. rm -rf /tmp/.X1*  # 如果再次启动,删除上一次的临时文件,否则无法正常启动
      2. 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

      3. # 检查是否启动,如果有vncserver的进程,证明已经启动
      4. ps -ef | grep vnc

      5. export DISPLAY=:1
      复制代码

  • 打开turbovnc客户端, 输入相应端口, 密码即可.

eg.以下python代码举例
  1. import numpy as np
  2. import cv2

  3. h = 500
  4. w = 500
  5. img = 255 * np.ones((h ,w , 3), dtype=np.uint8)
  6. cv2.imshow("", img)
  7. cv2.waitKey(0)
复制代码

登录云主机, 输入:
  1. rm -rf /tmp/.X1*  # 如果再次启动,删除上一次的临时文件,否则无法正常启动
  2. 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
  3. ps -ef | grep vnc
  4. export DISPLAY=:1
复制代码

打开cmd, 输入(eg: ssh -CNg -L 6006:127.0.0.1:6006 root@123.125.240.150 -p 42151. 注意, 输入密码默认不显示, 输入完直接回车即可):
打开turbovnc, 输入:
运行python代码:
至此, 大功告成
参考链接: https://www.autodl.com/docs/gui/
回复

使用道具 举报

QQ|Archiver|手机版|deepfacelab中文网 |网站地图

GMT+8, 2024-10-24 23:21 , Processed in 0.091152 second(s), 10 queries , Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表