本指南介绍了在 Ubuntu 18.04 系统上安装和配置 VNC 服务器所需的步骤。我们还将向您展示如何通过 SSH 隧道安全地连接到 VNC 服务器。

虚拟网络计算(VNC)是一种图形桌面共享系统,允许您使用键盘和鼠标远程控制另一台计算机。

先决条件

在继续学习本教程之前,请确保以具有 sudo 权限的用户身份登录。

安装桌面环境

大多数服务器没有安装桌面环境,因此我们首先要安装轻量级桌面环境。

Ubuntu 存储库中有几个桌面环境(DE)。在本教程中,我们将安装 Xfce 。它是快速,稳定和轻量级的桌面环境,非常适合在远程服务器上使用。

首先使用以下命令更新系统

sudo apt update
sudo apt upgrade

然后,键入以下命令以在服务器上安装 Xfce :

sudo apt install xfce4 xfce4-goodies xorg dbus-x11 x11-xserver-utils

(最后一个可能并不需要)

根据您的系统,下载和安装 Xfce 软件包可能需要一些时间。

安装 VNC 服务器

Ubuntu 存储库中还有几种不同的 VNC 服务器,如 TightVNC , TigerVNC 和 x11vnc 。每个 VNC 服务器在速度和安全性方面都有不同的优点和缺点。

我们将安装 TigerVNC ,它是高性能 VNC 服务器,并被积积极维护。

键入以下命令以在 Ubuntu 服务器上安装 TigerVNC :

sudo apt install tigervnc-standalone-server tigervnc-common

现在安装了 VNC 服务器,下一步是运行 vncserver 命令,该命令将创建初始配置并设置密码。运行以下命令时不要使用 sudo :

vncserver

系统将提示您输入并确认密码,以及是否将其设置为仅查看密码。如果您选择设置仅查看密码,则用户将无法使用鼠标和键盘与 VNC 实例进行交互。

You will require a password to access your desktops.Password:
Verify:
Would you like to enter a view-only password (y/n)? n
/usr/bin/xauth:  file /home/buzheng/.Xauthority does not existNew 'server2.buzheng.org:1 (buzheng)' desktop at :1 on machine server2.buzheng.orgStarting applications specified in /etc/X11/Xvnc-session
Log file is /home/buzheng/.vnc/server2.buzheng.org:1.logUse xtigervncviewer -SecurityTypes VncAuth -passwd /home/buzheng/.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 。

在继续下一步之前,首先使用带有 -kill 选项和服务器编号作为参数的 vncserver 命令停止 VNC 实例。在我们的例子中,服务器在端口 5901 (:1)中运行,因此我们将使用以下命令停止它:

vncserver -kill :1
Killing Xtigervnc process ID 7264... success!

配置 VNC 服务器

现在我们已经在服务器上安装了 Xfce 和 TigerVNC ,我们需要配置 TigerVNC 来使用 Xfce 。为此,请创建以下文件 〜/.vnc/xstartup:

nano ~/.vnc/xstartup
#!/bin/sh
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
exec startxfce4 

保存并关闭文件。无论何时启动或重启 TigerVNC 服务器,都将自动执行上述命令。

~/.vnc/xstartup 文件还需要具有执行权限。运行以下命令以确保权限正确:

chmod u+x ~/.vnc/xstartup

如果需要将附加选项传递给 VNC 服务器,则可以创建一个名为 config 的文件,并为每行添加一个选项。这是一个例子:

文件 ~/.vnc/config

geometry=1920x1084
dpi=96

创建 Systemd 单元文件

我们将创建一个 systemd 单元文件,使我们能够根据需要轻松启动,停止和重新启动 VNC 服务,与任何其他 systemd 服务相同。

打开文本编辑器,将以下配置复制并粘贴到其中。请务必更改第 7 行中的用户名以匹配您的用户名。

sudo nano /etc/systemd/system/vncserver@.service
[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target[Service]
Type=simple
User=buzheng
PAMName=login
PIDFile=/home/%u/.vnc/%H%i.pid
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill :%i > /dev/null 2>&1 || :'
ExecStart=/usr/bin/vncserver :%i -geometry 1440x900 -alwaysshared -fg
ExecStop=/usr/bin/vncserver -kill :%i[Install]
WantedBy=multi-user.target

保存并关闭文件。

通知 systemd 我们创建了一个新的单元文件:

sudo systemctl daemon-reload

下一步是使用以下命令启用单元文件:

sudo systemctl enable vncserver@1.service

符号 1 后面的数字 @ 定义了运行 VNC 服务的显示端口。这意味着 VNC 服务器将侦听端口 5901 ,正如我们在上一节中讨论的那样。

执行以下命令启动 VNC 服务:

sudo systemctl start vncserver@1.service

验证服务是否已成功启动:

sudo systemctl status vncserver@1.service
● vncserver@1.service - Remote desktop service (VNC)Loaded: loaded (/etc/systemd/system/vncserver@.service; indirect; vendor preset: enabled)Active: active (running) since Thu 2018-08-16 19:05:54 UTC; 4s agoProcess: 9893 ExecStartPre=/bin/sh -c /usr/bin/vncserver -kill :1 > /dev/null 2>&1 || : (code=exited, status=0/SUCCESS)Main PID: 9900 (vncserver)Tasks: 0 (limit: 507)CGroup: /system.slice/system-vncserver.slice/vncserver@1.service‣ 9900 /usr/bin/perl /usr/bin/vncserver :1 -geometry 1440x900 -alwaysshared -fg

连接到 VNC 服务器

VNC 不是加密协议,可以进行数据包嗅探。建议的方法是创建一个 SSH 隧道,该隧道将安全地将来自本地计算机的端口 5901 上的流量转发到同一端口上的服务器。

在 Linux 和 macOS 上设置 SSH 隧道

如果在计算机上运行 Linux , macOS 或任何其他基于 Unix 的操作系统,则可以使用以下命令轻松创建 SSH 隧道:

ssh -L 5901:127.0.0.1:5901 -N -f -l username server_ip_address

系统将提示您输入用户密码。

不要忘了更换 username ,并 server_ip_address 与您的用户名和服务器的 IP 地址。

在 Windows 上设置 SSH 隧道

如果运行 Windows ,则可以使用 PuTTY SSH 客户端设置 SSH 隧道。

打开 Putty 并在 Host name or IP address 字段中输入您的服务器 IP 地址。

在 Connection 菜单框下,展开 SSH 并选择 Tunnels 。输入 VNC 服务器端口(5901 在) Source Port 字段,并输入 server_ip_address:5901 在 Destination 现场和点击 Add 如下图所示的图像按钮:

返回 Session 页面以保存设置,这样您每次都不需要输入它们。现在,您只需选择已保存的会话并通过单击 Open 按钮登录到远程服务器。

使用 Vncviewer 连接

现在您已经设置了 SSH 隧道,现在可以打开 Vncviewer 并连接到 VNC 服务器了 localhost:5901 。

您可以使用任何 VNC 查看器,如 TigerVNC , TightVNC , RealVNC , UltraVNC Vinagre 和 VNC Viewer for Google Chrome 。

在这个例子中,我们将使用 TigerVNC 。打开 VNC 查看器,输入 localhost:5901 并单击 Connect 按钮。

出现提示时输入密码,您应该会看到默认的 Xfce 桌面。它应该看起来像这样:

您可以使用键盘和鼠标从本地计算机开始与远程 XFCE 桌面交互。

结论

到目前为止,您应该已经启动并运行 VNC 服务器,并且可以使用易于使用的图形界面从本地桌面计算机轻松管理 Ubuntu 18.04 服务器。

要配置 VNC 服务器以启动多个用户的显示,请使用该 vncserver 命令创建初始配置并设置密码。您还需要使用其他端口创建新的服务文件

ubuntu 18.04安装vnc相关推荐

  1. Ubuntu 18.04安装远程桌面

    Ubuntu 18.04安装远程桌面 陈拓 2021/08/05-2020/08/08 1. Putty登录 IP地址 192.168.0.103 登录账户 ccdc xxxxxxxx 2. Ubun ...

  2. Ubuntu 18.04 安装 redis入门使用

    Ubuntu 18.04 安装 redis入门使用 1.安装 sudo apt-get install redis-server 2.查看redis运行状态 ps -ef | grep redis 3 ...

  3. Ubuntu 18.04安装CUDA(版本10.2)和cuDNN

    1.系统要求 2.安装前的要求 3.runfile安装(不支持跨平台) 4.后续安装操作 5.安装cuDNN 6.汇总问题 本文基于Ubuntu 18.04.3 LTS 64位安装CUDA 10.2和 ...

  4. Ubuntu 18.04 安装OpenCV C++

    Ubuntu 18.04 安装OpenCV C++ 构建并安装 仅构建核心模块 # 更新并安装依赖 sudo apt update && sudo apt install -y cma ...

  5. Ubuntu 18.04安装NVIDIA(英伟达) RTX2080Ti显卡

    Ubuntu 18.04安装NVIDIA(英伟达) RTX2080Ti显卡 在安装显卡之前请先把ubuntu 18.04系统提前安装好. 需要准备的资料: NVIDIA 驱动 下载驱动 驱动的下载地址 ...

  6. linux 模拟运行 微信,Ubuntu 18.04 安装微信(Linux通用)

    Ubuntu 18.04 安装微信(Linux通用) 发布时间:2018-06-02 10:52, 浏览次数:1468 , 标签: Ubuntu Linux Linux相关的知识:https://ww ...

  7. ubuntu 18.04 安装 中文 拼音 输入法

    ubuntu 18.04 安装 中文输入法 拼音 在安装ubuntu时,如果选择英文安装默认会不启用中文输入法的.可以通过下述方法开启: 1,安装 pingyin 输入法 打开终端输入命令: sudo ...

  8. [笔记] Ubuntu 18.04安装Docker CE及nvidia-docker2流程

    这篇已经Out了,以[笔记] Ubuntu 18.04安装Docker CE及NVIDIA Container Toolkit流程为准. Docker的好处之一,就是在Container里面可以随意瞎 ...

  9. 完美解决 Ubuntu 18.04 安装网易云音乐 不能正常点击启动问题

    完美解决 Ubuntu 18.04 安装网易云音乐 不能正常点击启动问题 经过我的学习终于学会了,下面附上连接 完美解决

最新文章

  1. JSP数据交互(一)
  2. SqLite中的事务
  3. 光源时间_天哪!你们居然都错了!D65光源,指的是上午还是下午的太阳光?
  4. java注释日志打印_java 注解结合 spring aop 实现自动输出日志
  5. 解决python调用TensorFlow时出现FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecate
  6. python找出只出现一次的数字_Python数组中只出现一次的数字
  7. JavaOne 2012:非阻塞数据结构如何工作?
  8. 方法覆盖(方法重写)
  9. java 文件分割器_Java分割器
  10. 驱动开发专家解读《寒江独钓——Windows内核安全编程》
  11. 压缩感知重构算法——SP算法
  12. QT+Opencv视频文件TCP网络传输
  13. sinx/x在0到+∞的积分
  14. LSB图像隐写和峰值信噪比计算的python实现
  15. 职工档案管理系统报告与c语言,职工档案管理系统c语言
  16. 完美解决Windows 7更新失败(Windows Update 错误 80070003)
  17. 图片上传时,显示格式错误怎么办?
  18. Cass符号填充设置
  19. Ubuntu 下图像标注工具 labelImg 的安装及使用
  20. python制作收费_python分段计费demo

热门文章

  1. 医学图像处理软件MITK/VTK/ITK资料储备
  2. 第14讲:Python使用加法和乘法运算符操作列表
  3. 网络安全行业需要工匠精神吗?
  4. JavaEddy的难题
  5. PROFINET如何实现“一网到底”?
  6. leetcode--最长回文串(C语言)
  7. 【项目实战】登录与注册业务的实现(前端+后端+数据库)
  8. linux命令后加adm,Linux如何把当前的用户添加到sudoer中
  9. 全网首发!IPFS团队成员详细介绍:硅谷明星团队协议实验室
  10. MFC CPropertySheet 多页面切换 实例 .