Ubuntu 20.04 上安装和配置 VNC

打印 上一主题 下一主题

主题 653|帖子 653|积分 1959

先决条件

请确保以具有 sudo 权限的用户身份登录。发起使用具有 sudo 权限的平常用户进行处置惩罚,而不是直接使用 root 用户。创建用户并加入 sudoers 可自行百度。
安装桌面情况

大多数服务器没有安装桌面情况,因此我们起首要安装轻量级桌面情况。
Ubuntu 存储库中有几个桌面情况,远程桌面管剃头起选择安装 Xfce 。它是快速,稳定和轻量级的桌面情况,非常得当在远程服务器上使用。
起首使用以下命令更新系统
  1. sudo apt updatesudo apt upgrade
复制代码
然后,键入以下命令以在服务器上安装 Xfce :
  1. sudo apt install xfce4 xfce4-goodies xorg dbus-x11 x11-xserver-utils
复制代码
根据您的系统,下载和安装 Xfce 软件包大概必要一些时间。
安装 VNC 服务器

Ubuntu 存储库中另有几种差别的 VNC 服务器,如 TightVNC , TigerVNC 和 x11vnc 。每个 VNC 服务器在速率和安全性方面都有差别的优点和缺点。
我们将安装 TigerVNC ,它是高性能 VNC 服务器,并被积积极维护。
键入以下命令以在 Ubuntu 服务器上安装 TigerVNC :
  1. sudo apt install tigervnc-standalone-server tigervnc-common
复制代码
现在安装了 VNC 服务器,下一步是运行 vncserver
命令,该命令将创建初始配置并设置密码。运行以下命令时不要使用 sudo :
  1. vncserver
复制代码
系统将提示您输入并确认密码,以及是否将其设置为仅检察密码。如果您选择设置仅检察密码,则用户将无法使用鼠标和键盘与 VNC 实例进行交互。
  1. You will require a password to access your desktops.
  2. Password:Verify:Would you like to enter a view-only password (y/n)? n/usr/bin/xauth:  file /home/typhoon/.Xauthority does not exist
  3. New 'server2.typhoon.org:1 (typhoon)' desktop at :1 on machine server2.typhoon.org
  4. Starting applications specified in /etc/X11/Xvnc-sessionLog file is /home/typhoon/.vnc/server2.typhoon.org:1.log
  5. Use xtigervncviewer -SecurityTypes VncAuth -passwd /home/typhoon/.vnc/passwd :1 to connect to the VNC server.
复制代码
第一次 vncserver
运行命令时,它将创建密码文件并将其存储在 ~/.vnc 目录中,如果不存在,将创建该目录。
注意上面输出中主机名之后的 :1 。这表示运行 vnc 服务器的表现端口号。在我们的例子中,服务器在 TCP 端口 5901 (5900 + 1)上运行。如果您创建第二个实例, vncserver
它将在下一个空闲端口上运行,即 :2 这意味着服务器正在端口 5902 (5900 + 2)上运行。
重要的是要记住,当使用 VNC 服务器时, :X 是一个引用的表现端口 5900+X 。
注:如果启动时出现 vnc 启动异常: is taken because of /tmp/.X11-unix/X1
此时只必要将提示的文件删除即可。再次输入 vncserver

在继续下一步之前,起首使用带有 -kill 选项和服务器编号作为参数的 vncserver
命令制止 VNC 实例。在我们的例子中,服务器在端口 5901 (:1)中运行,因此我们将使用以下命令制止它:
  1. vncserver
  2. -kill :1
复制代码
  1. Killing Xtigervnc process ID 7264... success!
复制代码
配置 VNC 服务器

现在我们已经在服务器上安装了 Xfce 和 TigerVNC ,我们必要配置 TigerVNC 来使用 Xfce 。为此,请创建以下文件 〜/.vnc/xstartup:
  1. vim ~/.vnc/xstartup
复制代码
复制以下代码
  1. #!/bin/sh
  2. unset SESSION_MANAGER
  3. unset DBUS_SESSION_BUS_ADDRESS
  4. exec startxfce4
复制代码
保存并关闭文件。无论何时启动或重启 TigerVNC 服务器,都将自动实行上述命令。
~/.vnc/xstartup 文件还必要具有实行权限。运行以下命令以确保权限正确:
  1. chmod u+x ~/.vnc/xstartup
复制代码
创建 Systemd 单位文件
我们将创建一个 systemd 单位文件,使我们能够根据必要轻松启动,制止和重新启动 VNC 服务,与任何其他 systemd 服务相同。
打开文本编辑器,将以下配置复制并粘贴到其中。
  1. sudo nano /etc/systemd/system/vncserver
  2. @.service
复制代码
请务必更改第 7 行中的用户名以匹配您的用户名。
  1. [Unit]Description=Remote desktop service (VNC)After=syslog.target network.target[Service]Type=simpleUser=usernamePAMName=loginPIDFile=/home/%u/.vnc/%H%i.pidExecStartPre=/bin/sh -c '/usr/bin/vncserver
  2. -kill :%i > /dev/null 2>&1 || :'ExecStart=/usr/bin/vncserver
  3. :%i -geometry 1440x900 -alwaysshared -fgExecStop=/usr/bin/vncserver
  4. -kill :%i[Install]WantedBy=multi-user.target
复制代码
保存并关闭文件。
关照 systemd 我们创建了一个新的单位文件:
  1. sudo systemctl daemon-reload
复制代码
下一步是使用以下命令启用单位文件:
  1. sudo systemctl enable vncserver
  2. @1.service
复制代码
符号 1 后面的数字 @ 定义了运行 VNC 服务的表现端口。这意味着 VNC 服务器将侦听端口 5901 ,正如我们在上一节中讨论的那样。
实行以下命令启动 VNC 服务:
  1. sudo systemctl start vncserver
  2. @1.service
复制代码
验证服务是否已成功启动:
  1. sudo systemctl status vncserver
  2. @1.service
复制代码
  1. ● vncserver
  2. @1.service - Remote desktop service (VNC)   Loaded: loaded (/etc/systemd/system/vncserver
  3. @.service; indirect; vendor preset: enabled)   Active: active (running) since Thu 2018-08-16 19:05:54 UTC; 4s ago  Process: 9893 ExecStartPre=/bin/sh -c /usr/bin/vncserver
  4. -kill :1 > /dev/null 2>&1 || : (code=exited, status=0/SUCCESS) Main PID: 9900 (vncserver
  5. )    Tasks: 0 (limit: 507)   CGroup: /system.slice/system-vncserver
  6. .slice/vncserver
  7. @1.service           ‣ 9900 /usr/bin/perl /usr/bin/vncserver
  8. :1 -geometry 1440x900 -alwaysshared -fg
复制代码
连接到 VNC 服务器

VNC 不是加密协议,可以进行数据包嗅探。发起的方法是创建一个 SSH 隧道,该隧道将安全地未来自本地计算机的端口 5901 上的流量转发到同一端口上的服务器。
在 Linux 和 macOS 上设置 SSH 隧道
如果在计算机上运行 Linux , macOS 或任何其他基于 Unix 的操作系统,则可以使用以下命令轻松创建 SSH 隧道:
  1. ssh -L 5901:127.0.0.1:5901 -N -f -l <username> <server_ip_address>
复制代码
记得更换 username,server_ip_address 为您的服务器 root 用户名和 IP 地点。
系统将提示您输入用户密码。
该-L开关指定的端口绑定。在这种情况下,我们将5901远程连接的端口5901绑定到本地计算机上的端口。该-C开关启用压缩,而-N开关告诉ssh我们不希望实行远程命令。该-l开关指定远程登录名。
如果您使用的是图形化 SSH 客户端(如 PuTTY),请将 server_ip_address 用作连接 IP,并在程序的 SSH 隧道设置中设置localhost:5901为新的转发端口。
隧道运行后,使用 VNC 客户端进行连接localhost:5901。系统将提示您使用在步调 1 中设置的密码进行身份验证。

连接后,您将看到默认的 Xfce 桌面。它应该看起来像如许:

测试

使用gstreamer启动视频,可以表现图形界面

增补

如果服务器是通过端口转发,需添加-p参数
  1. ssh -p <ssh转发端口号> -L 5901:127.0.0.1:5901 -N -f -l <username> <server_ip_address>
复制代码
参考

Ubuntu 20.04 上安装和配置 VNC
gstreamer tutorials

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

渣渣兔

金牌会员
这个人很懒什么都没写!

标签云

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