服务器可视化方案


远程服务器可视化解决方案

远程服务器使用Ubuntu20.04,直接SSH连接后是命令行窗口,如果想使用远程服务器的资源跑深度学习代码有些不方便。

之前我采用的方法包括:

  • 本地写好代码,然后打包将代码.py文件和数据集上传到服务器环境,命令行窗口中运行代码

    1
    python **.py
  • 远程服务器Vim文本编辑器写代码,简单快捷,但是没有代码提示,Vim编辑器不太会用。

  • 使用MobaXterm连接服务器,使用Xserver转发打开可视化窗口写代码。MobaXterm自带Xserver,直接命令行打开可视化应用写代码,如下列代码。

    1
    2
    3
    gedit # 打开gedit文本编辑器
    nautilus # 打开文件管理器
    gnome-terminal # 打开gnome桌面环境下的终端

    如果想要从命令行打开pycharm等IDE,需要配置下环境变量,或者将Pycharm打开程序的软连接放到环境变量中的Path路径里面。具体过程为:

    1. 解压下载下来的pycharm压缩包,得到文件夹,在里面找到bin目录下面的pycharm.sh文件,这就是pycharm的启动文件。

    2. 想要终端可以直接打开pycharm,需要对pycharm.sh建立软连接,并复制到/usr/bin/目录下,终端可以直接运行该文件夹下的程序。

    3. 想要桌面直接打开,需要对pycharm.sh建立快捷方式pycharm.desktop,里面内容填写为。

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      [Desktop Entry]
      Encoding=UTF-8
      Name=pycharm
      Comment=pycharm
      Exec= # 根据软件的具体执行路径修改
      Icon= #根据软件的具体执行路径修改
      Terminal=false #软件打开时是否启动终端
      StartupNotify=false
      Type=Application
      Categories=Application;Development;

      将该文件复制到/usr/share/applications/目录下,该目录下在环境变量中,因此目录下的文件可以从终端启动。然后复制到桌面一份,并设置Allow this file to run as a program

    4. 之后就可以直接从MobaXterm里面输入pycharm或者sudo pycharm打开pycharm窗口进行编程了。

  • 使用pycharm或者VScode远程开发功能。

    1. pycharm专业版自带远程开发,社区版没有。

      • 在Project Interpreter中,Existing interpreter里,点击右侧…新建解释器,选择SSH Interpreter,设置Host和Username,然后选择远程环境中的解释器路径,找到远程conda虚拟环境中的python程序。
      • 在Remote Project Location中设置映射文件的路径,每次改变后会把本机的文件和映射路径下的文件进行一个同步。
      • 右面remote host中可以看到服务器上的文件,要对文件进行修改,需要先下载下来,再修改,再上传上去,不能直接修改。
    2. VScode远程开发非常好用,需要安装Remote - SSH插件。

      安装后再左侧选择“远程资源管理器”,新建远程的SSH连接,这时候会打开一个新的VScode窗口,后续所有操作都是在服务器上面进行,不需要额外的配置,使用体验和本机没有任何区别。

目前我已知的远程桌面方案包括X2go、RDP、VNC。

X2go

X2go是一种轻型的远程桌面方式,提供了一个工作中的“云”桌面,具有始终在线、可远程访问且易于扩展的计算系统以及快速网络的所有优势。它也比许多 VNC 解决方案响应更快、更安全。

X2Go 服务器也有一些已知的兼容性问题。像 KDE 3/4、Xfce、MATE 和 LXDE 是对 X2Go 服务器最友好的桌面环境。但是,用其它桌面管理器效果可能有所不同。例如,已知 GNOME 3 之后的版本、KDE 5、Unity 和 X2Go 并不兼容。

配置远程桌面并设置X2go服务端

  1. 安装add-apt-repository工具

    1
    2
    sudo apt-get install python-software-properties # Ubuntu 10.04 or 12.04
    sudo apt-get install software-properties-common # Ubuntu 14.04
  2. 安装服务端

    1
    2
    3
    sudo add-apt-repository ppa:x2go/stable
    sudo apt-get update
    sudo apt-get install x2goserver x2goserver-xsession

设置客户端

  1. Windows:从网站[doc:installation:x2goclient X2Go - everywhere@home]上下载合适的客户端

  2. Ubuntu:使用下列命令之一进行安装

    1
    2
    apt-get install x2goclient
    aptitude install x2goclient

    如果软件源中不包含X2Go,可以手动添加repositories。参考:

    https://wiki.x2go.org/doku.php/wiki:repositories:debian

    https://wiki.x2go.org/doku.php/wiki:repositories:ubuntu

    安装完后命令行输入x2goclient,或者在图形桌面环境的Internet部分中可以找到启动程序。

bug部分

  1. x2go cannot use a private OpenSSH key of the ECDSA type using bcrypt as the passphrase hashing algorithm。即便输入正确的passphrase,X2go也会一直询问输入passphrase。

    解决办法:使用RSA keys生成新的ssh密钥对

    1
    ssh-keygen -trsa -b4096

RDP

RDP 是由微软公司开发的一种专有协议,它为用户提供了通过网络连接到另一台计算机的图形界面。在使用上,用户需要使用 RDP 客户端软件,而在远程另一台计算机则需要运行 RDP 服务器软件。缺省配置下,服务器监听 TCP 端口3389 和 UDP 端口3389Windows系统可以直接使用远程桌面来实现RDP连接,开始菜单搜索“远程桌面连接”。

安装桌面环境

以GNOME为例,除了GNOME外,还可以选择LXDEXfce等桌面环境。

1
2
sudo apt update
sudo apt install ubuntu-desktop

安装xRDP

1
sudo apt install -y xrdp

安装完成后,xRDP服务将自动启动,可以通过以下命令检查其状态

1
sudo systemctl status xrdp

接下来为Linux用户设置登录密码

1
2
sudo passwd <用户名> # 修改密码
sudo adduser <用户名> ssl-cert # 将用户添加到ssl-cert组

xRDP默认使用自签发的证书,保存在 /etc/ssl/private/ssl-cert-snakeoil 位置下。

VNC

安装桌面环境

1
2
sudo -i # 切换至root用户
apt install gnome-panel gnome-settings-daemon metacity nautilus gnome-terminal ubuntu-desktop # 安装控制面板,文件管理器,终端等桌面应用程序

配置VNC服务

1
apt install -y tightvncserver

启动VNC服务,监听在5901号TCP端口

1
vncserver # 之后会要求设置一个密码

查看VNC服务信息

1
ss -lntp | grep 5901

通过kill命令可以结束VNC服务进程

1
vncserver -kill :1 # 1对应5901号端口,2对应5902号端口

编辑VNC的启动脚本:

1
vim .vnc/xstartup

脚本的内容为:

1
2
3
4
export XKL_XMODMAP_DISABLE=1
export XDG_CURRENT_DESKTOP=GNOME-Flashback:GNOME
export XDG_MENU_PREFIX=gnome-flashback-
gnome-session --session=gnome-flashback-metacity --disable-acceleration-check &

前三条为环境变量的设置,最后一条为启动gnome桌面环境的会话,再次启动VNC服务

1
vncserver -geometry 1920x1080 :1 # x为英文符号,不是*号,-geometry参数设置分辨率,:1设置监听的端口

客户端连接部分

下载VNC客户端,比如VNC Viewer,地址为Download VNC Viewer | VNC® Connect (realvnc.com)

打开后输入远程服务器的地址,例如127.0.0.1:1,这里是:1而不是:5901,然后就可以打开远程桌面环境了。

VNC的一些说明

VNC是使用远程帧缓冲协议来进行远程桌面连接,类似按像素来传输信息,所以会比较卡,需要足够的带宽,我不太喜欢使用。