在Ubuntu 14.04上安装和配置VNC的方法

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。

简介

VNC,即“虚拟网络计算”,是一种连接系统,允许您使用键盘和鼠标与远程服务器上的图形桌面环境进行交互。对于尚未熟悉使用命令行的用户来说,VNC使得在远程服务器上管理文件、软件和设置变得更加容易。

在本指南中,我们将在 Ubuntu 14.04 服务器上设置 VNC,并通过 SSH 隧道安全地连接到它。我们将使用的 VNC 服务器是 TightVNC,这是一个快速且轻量级的远程控制软件包。选择 TightVNC 将确保即使在较慢的互联网连接上,我们的 VNC 连接也能保持流畅和稳定。

先决条件

在开始本指南之前,需要完成一些步骤。

您需要安装和配置了一个具有 sudo 权限的非 root 用户的 Ubuntu 14.04 服务器。如果您尚未完成此操作,可以按照 Ubuntu 14.04 初始服务器设置指南中的步骤 1-4 创建此帐户。

一旦您拥有了非 root 用户,就可以使用它通过 SSH 登录到您的 Ubuntu 服务器,并继续安装 VNC 服务器。

步骤一 — 安装桌面环境和 VNC 服务器

默认情况下,大多数 Linux 服务器安装不会包含图形桌面环境。如果是这种情况,我们需要先安装一个可用的桌面环境。在本示例中,我们将安装 XFCE4,它非常轻量级,同时对大多数用户来说也很熟悉。

我们可以直接从 Ubuntu 的软件仓库使用 apt 获取 XFCE 包以及 TightVNC 包:

sudo apt-get update
sudo apt-get install xfce4 xfce4-goodies tightvncserver

要完成 VNC 服务器的初始配置,使用 vncserver 命令设置一个安全密码:

vncserver

(设置访问密码后,系统会询问您是否要输入一个只读密码。使用只读密码登录的用户将无法使用鼠标或键盘控制 VNC 实例。如果您想要向其他人演示使用您的 VNC 服务器,这是一个有用的选项。)

vncserver 通过创建默认配置文件和连接信息来完成 VNC 的安装。安装了这些软件包后,您就可以配置 VNC 服务器和图形桌面了。

步骤二 — 配置 VNC 服务器

首先,我们需要告诉 VNC 服务器在启动时执行哪些命令。这些命令位于一个名为 xstartup 的配置文件中。我们的 VNC 服务器已经预先加载了一个 xstartup 文件,但我们需要为我们的 XFCE 桌面使用一些不同的命令。

当 VNC 首次设置时,它会在端口 5901 上启动一个默认服务器实例。此端口称为显示端口,并且被 VNC 称为 :1。VNC 可以在其他显示端口上启动多个实例,如 :2:3 等。在使用 VNC 服务器时,请记住 :X 是一个显示端口,它指的是 5900+X

由于我们将要更改 VNC 服务器的配置,我们首先需要停止在端口 5901 上运行的 VNC 服务器实例:

vncserver -kill :1

在开始配置新的 xstartup 文件之前,让我们先备份原始文件以防以后可能会用到:

mv ~/.vnc/xstartup ~/.vnc/xstartup.bak

现在,可以使用 nano 打开一个新的 xstartup 文件:

nano ~/.vnc/xstartup

将以下命令插入文件中,以便在启动或重新启动 VNC 服务器时自动执行:

#!/bin/bash
xrdb $HOME/.Xresources
startxfce4 &

文件中的第一个命令 xrdb $HOME/.Xresources 告诉 VNC 的 GUI 框架读取服务器用户的 .Xresources 文件。.Xresources 是用户可以更改图形桌面的某些设置的地方,比如终端颜色、光标主题和字体渲染。

第二个命令简单地告诉服务器启动 XFCE,您将在其中找到舒适地管理服务器所需的所有图形软件。

为确保 VNC 服务器能够正确使用这个新的启动文件,我们需要授予它可执行权限:

sudo chmod +x ~/.vnc/xstartup

步骤三 — 创建 VNC 服务文件

为了方便地控制我们的新 VNC 服务器,我们应该将其设置为 Ubuntu 服务。这将允许我们根据需要启动、停止和重新启动 VNC 服务器。

首先,使用 nano/etc/init.d 中打开一个新的服务文件:

sudo nano /etc/init.d/vncserver

第一块数据将是我们声明一些 VNC 经常引用的常见设置的地方,比如我们的用户名和显示分辨率。

#!/bin/bash
PATH="$PATH:/usr/bin/"
export USER="user"
DISPLAY="1"
DEPTH="16"
GEOMETRY="1024x768"
OPTIONS="-depth ${DEPTH} -geometry ${GEOMETRY} :${DISPLAY} -localhost"
. /lib/lsb/init-functions

请务必将 user 替换为您设置的非 root 用户,并根据需要更改 1024x768 以使用其他屏幕分辨率进行虚拟显示。

接下来,我们可以开始插入允许我们管理新服务的命令指令。以下块绑定了启动 VNC 服务器所需的命令和正在启动的反馈到 start 命令关键字。

case "$1" in
start)
log_action_begin_msg "Starting vncserver for user '${USER}' on localhost:${DISPLAY}"
su ${USER} -c "/usr/bin/vncserver ${OPTIONS}"
;;

下一个块创建了 stop 命令关键字,它将立即终止现有的 VNC 服务器实例。

stop)
log_action_begin_msg "Stopping vncserver for user '${USER}' on localhost:${DISPLAY}"
su ${USER} -c "/usr/bin/vncserver -kill :${DISPLAY}"
;;

最后一个块是 restart 命令关键字,它简单地将两个先前的命令(stopstart)合并为一个命令。

restart)
$0 stop
$0 start
;;
esac
exit 0

一旦所有这些块都在您的服务脚本中,您可以保存并关闭该文件。将此服务脚本设置为可执行,以便您可以使用刚刚设置的命令:

sudo chmod +x /etc/init.d/vncserver

现在尝试使用服务和命令启动一个新的 VNC 服务器实例:

sudo service vncserver start

第四步 — 连接到你的 VNC 桌面

要测试你的 VNC 服务器,你需要使用一个支持通过 SSH 隧道连接 VNC 的客户端。如果你使用 Windows,你可以使用 TightVNC、RealVNC 或 UltraVNC。Mac OS X 用户可以使用内置的屏幕共享,或者可以使用跨平台应用程序如 RealVNC。

首先,我们需要在本地计算机上创建一个安全地转发到 VNC 的 localhost 连接的 SSH 连接。你可以通过 Linux 终端或 OS X 使用以下命令来完成:

(记得用你通过 SSH 连接到服务器时使用的用户名和 IP 地址替换 userserver_ip_address。)

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

如果你使用图形化 SSH 客户端,如 PuTTY,将 server_ip_address 作为连接 IP,并在程序的 SSH 隧道设置中设置 localhost:5901 作为一个新的转发端口。

接下来,你可以使用 VNC 查看器连接到 localhost:5901 的 VNC 服务器。确保不要忘记末尾的 :5901,因为那是唯一可以从中访问 VNC 实例的端口。

一旦连接成功,你应该看到默认的 XFCE 桌面已准备好进行配置和使用!它应该看起来像这样:

!First VNC
connection

一旦验证了 VNC 连接正常工作,将你的 VNC 服务添加到默认服务中,这样它将在每次启动服务器时自动启动:

sudo update-rc.d vncserver defaults

结论

现在你应该在你的 Ubuntu 14.04 服务器上拥有一个安全的 VNC 服务器正在运行。现在你将能够使用易于使用的图形界面来管理服务器的文件、软件和设置。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/867818.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python编程学习笔记(1)--- 变量和简单数据类型

1、变量 在学习编程语言之前,所接触的第一个程序,绝大多数都是: print("Hello world!") 接下来尝试使用一个变量。在代码中的开头添加一行代码,并对第二行代码进行修改,如下: message "…

中国星坤X1224系列线对板连接器:小巧稳定,助力物联网终端高效运行

在物联网、电器和消防等领域,终端设备的安全稳定运行至关重要。为了满足这些领域对连接器高可靠性、小巧轻便和耐高温的需求,X1224系列线对板连接器应运而生。这款连接器以其独特的设计和卓越的性能,成为了终端设备中不可或缺的一部分。 一、…

Ubantu22.04 通过FlatPak安装微信

Ubuntu22.04 下使用Flatpak稳定安装微信! 国际惯例,废话不多说,先上效果图。为啥使用Flatpak,因为Wechat官方只在FlatPak发布了最新的版本。之前使用了Wine以及Dock安装Wechat,效果都不是很理想,bug很多。所以使用了FlatPak。 Fl…

免费的鼠标连点器电脑版教程!官方正版!专业鼠标连点器用户分享教程!2024最新

电脑技术的不断发展,许多用户在日常工作和娱乐中,需要用到各种辅助工具来提升效率或简化操作,而电脑办公中,鼠标连点器作为一种能够模拟鼠标点击的软件,受到了广大用户的青睐。本文将为大家介绍一款官方正版的免费鼠标…

一.2.(3)放大电路的图解分析方法和微变等效电路分析方法;

放大电路的主要分析方法:图解法、微变等效电路法 这里以共射放大电路为例 (1) 图解法: 1.静态分析 首先确定静态工作点Q,然后根据电路的特点,做出直流负载线,进而画出交流负载线,最后,画出各极电流电压的波形。求出最大不失真输出电压。 估算IBQ,然后根据数据手册里…

09.QT控件:按钮类控件

1. QPushButton 在QT中使⽤ QPushButton 表⽰⼀个按钮。QPushButton 继承⾃ QAbstractButton,这个类是⼀个抽象类,是其他按钮的⽗类。 (1)QAbstractButton 中,和 QPushButton 相关性较⼤的属性: &#xf…

STM32-Unix时间戳和BKP备份寄存器以及RTC实时时钟

本内容基于江协科技STM32视频学习之后整理而得。 文章目录 1. Unix时间戳1.1 Unix时间戳简介1.2 UTC/GMT1.3 时间戳转换 2. BKP备份寄存器2.1 BKP简介2.2 BKP基本结构2.3 BKP库函数 3. RTC实时时钟3.1 RTC简介3.2 RTC框图3.3 RTC基本结构3.4 硬件电路3.5 RTC操作注意事项3.6 R…

vue事件处理v-on或@

事件处理v-on或 我们可以使用v-on指令(简写)来监听DOM事件,并在事件触发时执行对应的Javascript。用法:v-on:click"methodName"或click"hander" 事件处理器的值可以是: 内敛事件处理器&#xff1…

Golang | Leetcode Golang题解之第213题打家劫舍II

题目: 题解: func _rob(nums []int) int {first, second : nums[0], max(nums[0], nums[1])for _, v : range nums[2:] {first, second second, max(firstv, second)}return second }func rob(nums []int) int {n : len(nums)if n 1 {return nums[0]}…

SSRF靶场通关合集

目录 前言 SSRF总结 1.pikachu 1.1SSRF(curl) 1.1.1http协议 1.1.2 file协议查看本地文件 1.1.3 dict协议扫描内网主机开放端口 1.2 SSRF(file_get_content) 1.2.1 file读取本地文件 1.2.2 php://filter/读php源代码 2.DoraBox靶场 前言 最近…

恢复出厂设置手机变成砖

上周,许多Google Pixel 6(6、6a、6 Pro)手机用户在恢复出厂设置后都面临着设备冻结的问题。 用户说他们在下载过程中遇到了丢失 tune2fs 文件的错误 。 这会导致屏幕显示以下消息:“Android 系统无法启动。您的数据可能会被损坏…

Linux服务器使用总结-不定时更新

# 查看升级日志 cat /var/log/dpkg.log |grep nvidia|grep libnvidia-common

如何在多个服务器上安装WordPress分布式部署

许多网络主机现在保证其服务的正常运行时间为 99.9%,但这仍然每年最多有 8.7 小时的停机时间。 许多公司不能够承担这种风险。例如。在超级碗比赛中失败的体育新闻网站可能会失去忠实的追随者。 我们通过设置维护高可用性 WordPress分布式部署配置来帮助 WordPres…

unity3d:Shader知识点,矩阵,函数,坐标转换,Tags,半透明,阴影,深度,亮度,优化

基本结构 Shader "MyShaderName" {Properties {// 属性}SubShader {// 针对显卡A的SubShaderPass {// 设置渲染状态和标签Tags { "LightMode""ForwardBase" }// 开始Cg代码片段CGPROGRAM// 该代码片段的编译指令,例如:#p…

【笔记】在window上连接虚拟机中的redis

愚昧啊 困扰了我近两天的问题居然是因为是java代码写错地方了 在虚拟机中进入redis.conf文件 vim redis.conf /bind --斜杠搜索关键词 将值设置为 bind 0.0.0.0 保存 退出:wq 回到java中 添加redis依赖 刷新maven 就是在这一步出问题……………………………………自己在蓝…

LeetCode 189.轮转数组 三段逆置 C写法

LeetCode 189.轮转数组 C写法 三段逆置 思路: 三段逆置方法:先逆置前n-k个 再逆置后k个 最后整体逆置 由示例1得,需要先逆置1,2,3,4 再逆置5,6,7,最后前n-k个与后k个逆置 代码 void reverse(int*num, int left, int right) //逆置函数 { while(left …

react-类组件1

类组件&#xff1a; import { Component } from "react";class App extends Component {constructor() {super();this.state {message: "xxxxx",};}render() {return (<div><div>{this.state.message}</div></div>);} }export d…

算法的空间复杂度(C语言)

1.空间复杂度的定义 算法在临时占用储存空间大小的量度&#xff08;就是完成这个算法所额外开辟的空间&#xff09;&#xff0c;空间复杂度也使用大O渐进表示法来表示 注&#xff1a; 函数在运行时所需要的栈空间(储存参数&#xff0c;局部变量&#xff0c;一些寄存器信息等)…

Python | Leetcode Python题解之第217题存在重复元素

题目&#xff1a; 题解&#xff1a; class Solution(object):def containsDuplicate(self, nums):if len(set(nums)) ! len(nums):return Trueelse:return False

一种一维时间序列信号变化/事件/异常检测方法(MATLAB)

随着工业物联网、大数据和人工智能的发展&#xff0c;传统工业正在向数字化和智能化升级&#xff0c;从而创造了大量的时间序列数据。通过分析这些数据&#xff0c;可以提供准确可靠的信息服务和决策依据&#xff0c;促进制造业的转型升级。工业物联网在传统工业向“工业 4.0”…