CentOS7 快速搭建VNC Server 实现服务器远程控制台访问(Java Viewer)

2023-11-08

CentOS7 快速搭建VNC Server 实现服务器远程控制台访问(Java Viewer)

前言

工作中会有使用到VNC的时候,尤其是做服务器运维相关工作的时候,往往远程管理网和办公网或者生产环境相互隔离,远程管理的工作就会变的复杂,因此为了实现方便管理同时保障网络安全性,往往服务器运维人员会将在远程数据中心(IDC)内搭建一套Windows桌面系统或者使用VNC实现远程管理KVM Java Viewer的访问。

准备工作

  • 确认yum源可用
  • 确认有root或者sudo权限
  • 保证各部分的网络是可联通的

开始部署

1. 安装CentOS桌面环境
CentOS的桌面环境有很多,如GNOME Desktop,KDE,Xfce,LXDE等,这里我们选择Xfce,其他的也都可以使用,看个人喜好。
安装Xfce比较简单,使用yum即可:

sudo yum group list #查看可以安装的软件包
sudo yum -y groupinstall Xfce #安装Xfce桌面环境

2. 安装并配置VNC Server

(1)VNC Server的安装也很简单,CentOS默认使用的VNC Server是tigervnc,可以直接通过yum安装:

sudo yum -y install tigervnc-server #安装VNC Server

(2)安装完成以后,需要进行简单的配置,VNC Server最好不要使用root权限,创建一个专门用于VNC的账号,并设置密码。

使用root账号创建用户,我这里是创建的maintain用户:

useradd maintain
#
su maintian  #切换到maintain用户
#
vncpasswd #执行vncpasswd 设置vnc 密码
Password:
Verify:
Would you like to enter a view-only password (y/n)? n
A view-only password is not used

密码设置完成后,会在/home/maintain/.vnc/下生成passwd文件,用于存储和验证密码。
(3)启动配置VNC Server,这里有两种方式:
第一种是使用服务配置文件的形式,需要复制配置文件并更改配置:

cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service  #指定服务实例编号,这里是数字1,同时也是端口号5901
#
vim /etc/systemd/system/vncserver@:1.service
[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target

[Service]
Type=xfce  #修改成支持的桌面模式

# Clean any existing files in /tmp/.X11-unix environment
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'   # %i 修改成 :1
ExecStart=/usr/bin/vncserver_wrapper <USER> %i   #USER修改成自己创建 的vnc 用户。
ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'  # %i 修改成 :1

[Install]
WantedBy=multi-user.target
#
systemctl daemon-reload  #加载守护进程
systemctl start vncserver@:1 #启动服务ID1的程序

这种启动方式我并未使用和验证,整个配置是参考了下面这篇文章,感兴趣的可以自行配置和验证。参考文章:https://serverspace.io/support/help/installing-and-configuring-a-vnc-server-on-centos-7/

第二种方式是直接在VNC用户下执行:vncserver,缺点是服务器重启后需要重新执行,或者写脚本做到开机自启动,优点是简单,同时可以满足需求。

vncserver  #执行,第一次执行的时候会在用户家目录下的 /.vnc 生成两个主要配置文件config和xstartup
#
ls /home/maintain/.vnc
config  <hostname>:1.log   <hostname>:1.pid  passwd  xstartup
#
cd /home/maintain/.vnc
vim xstartup  #更改配置文件
#!/bin/sh

unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
startxfce4   #更换成使用的桌面模式,若是使用GNOME Desktop,则保持默认即可
# Assume either Gnome or KDE will be started by default when installed
# We want to kill the session automatically in this case when user logs out. In case you modify
# /etc/X11/xinit/Xclients or ~/.Xclients yourself to achieve a different result, then you should
# be responsible to modify below code to avoid that your session will be automatically killed
if [ -e /usr/bin/gnome-session -o -e /usr/bin/startkde ]; then
    vncserver -kill $DISPLAY
fi
#
cat config #可以保持不变,不必须更改
#securitytypes=vncauth,tlsvnc
#desktop=xfce
#
vncserver #第一次更改完配置文件,再次执行,不用加“:1”,会自动往后排序,具体用法可以使用“-h”查看。
vncserver -list #查看当前的服务进程的运行列表,可以看到“:1”存在。如无问题,则到此vnc server的配置和启动就完成了

TigerVNC server sessions:

X DISPLAY #	PROCESS ID
:1		429387
#
netstat -tlnp
tcp        0      0 0.0.0.0:5902            0.0.0.0:*               LISTEN      554190/Xvnc
#
ss -tulpn| grep vnc

(4)连接验证
下载VNC Viewer,可通过官网下载并完成安装。
打开客户端,新建连接:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
连接VNC server验证完成,可以开启VNC使用之旅了。

3. 安装Google-chrome浏览器
完成上面的VNC连接以后,开始安装浏览器(若是使用的GNOME Desktop桌面模式,默认自带Firefox浏览器),这里我选择的是Google-chrome浏览器,使用习惯问题,不必纠结。
这里安装是使用的yum方式,主机可以访问外网,若是环境不允许可以自行下载Linux版本的软件包,使用手动安装方式,可参考Google官网,不做介绍:https://support.google.com/chrome/answer/95346?hl=zh-Hans&co=GENIE.Platform%3DDesktop#zippy=%2Clinux

请确保有权限或者在root用户下执行:

cat /etc/yum.repos.d/google-chrome.repo  #创建repo源
[google-chrome]
name=google-chrome
baseurl=http://dl.google.com/linux/chrome/rpm/stable/x86_64
enabled=1
gpgcheck=1
gpgkey=https://dl.google.com/linux/linux_signing_key.pub

#
yum clean all
#
yum -y install google-chrome-stable

打开VNC桌面,查看Google-chrome的安装情况,并运行:
在这里插入图片描述

4. 安装Java jdk
浏览器完成安装以后,并不是我们最终的目标,服务器运维工程师在进行远程管理访问的时候是基于浏览器完成的,在具体操作时还需要Java的支持。
在这里插入图片描述
这里jdk的安装同样使用yum的方式安装:

yum list |grep ‘jdk’
java-1.8.0-openjdk.x86_64
java-1.8.0-openjdk-headless.x86_64
#
yum -y install java-1.8.0-openjdk.x86_64 #如果存量服务器都比较老,建议安装低版本jdk
yum -y install java-1.8.0-openjdk-headless.x86_64
#
rpm -qa |grep jdk
java-1.8.0-openjdk-1.8.0.302.b08-0.el7_9.x86_64
java-1.8.0-openjdk-headless-1.8.0.302.b08-0.el7_9.x86_64

5. 安装icedtea-web软件
(1)icedtea简单理解就是Java jdk的一个工具,浏览器的插件,安装也非常的方便:

yum list |grep icedtea-web
icedtea-web.x86_64
icedtea-web-devel.noarch
icedtea-web-javadoc.noarch
#
yum -y install icedtea-web

(2)添加Google-chrome支持
Google-chrome的默认安装目录是/opt/google/chrome/,添加Java icedtea插件支持:

mkdir /opt/google/chrome/plugins
#
cd /opt/google/chrome/plugins
#
ln -s /usr/lib64/IcedTeaPlugin.so .

至此整个过程完毕

最后

  • 鉴于Java jdk这块使用的时候问题会比较多,因此建议后续服务器运维多选择HTML5 Viewer。
  • 关于Firefox浏览器插件的支持,Java官网同样给出了方发,同Google-chrome,只是库文件不一样,具体可查阅官网。

参考文档

https://wiki.archlinux.org/title/TigerVNC#Initial_setup
https://serverspace.io/support/help/installing-and-configuring-a-vnc-server-on-centos-7/
Java官网:https://www.java.com/zh-CN/download/help/enable_browser_ubuntu.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CentOS7 快速搭建VNC Server 实现服务器远程控制台访问(Java Viewer) 的相关文章

  • jpegtran 优化而不更改文件名

    我需要优化一些图像 但不更改它们的名称 jpegtran copy none optimize image jpg gt image jpg 但是 这似乎创建了 0 的文件大小 当我对不同的文件名执行此操作时 大小仍然完全相同 怎么样 jp
  • Linux 中什么处理 ping?

    我想覆盖 更改 linux 处理 ping icmp echo 请求数据包的方式 这意味着我想运行自己的服务器来回复传入的 icmp 回显请求或其他 数据包 但为了使其正常工作 我想我需要禁用 Linux 的默认 ping icmp 数据包
  • 查找哪个程序运行另一个程序

    我有一个 NAS 运行在 Redhat Linux 的有限版本上 我按照指示破解了它 这样我就可以访问 shell 这很有帮助 我还做了一些修改 其他人也做过修改 除了一个问题之外 它们似乎都工作得很好 不知何故 每隔 22 天 系统就会关
  • CoAP数据包的大小是多少?

    我是这项技术的新手 有人可以帮助我了解一些疑问吗 Q 1 CoAP数据包的大小是多少 我知道有 4 字节固定标头 但是包括标头 选项和负载在内的最大大小限制是多少 Q 2 有像MQTT那样的Keep Alive的概念吗 它在UDP上工作 它
  • 删除 Git 存储库,但保留所有文件

    在我使用 Linux 的过程中的某个时刻 我决定将我的主目录中的所有内容都放入源代码管理中是个好主意 我不是在问这是否是一个好主意 我是在问如何撤销它 删除存储库的原因是我最近安装了 Oh My Zsh 而且我非常喜欢它 问题是我的主目录有
  • 如何减去两个 gettimeofday 实例?

    我想减去两个 gettimeofday 实例 并以毫秒为单位给出答案 这个想法是 static struct timeval tv gettimeofday tv NULL static struct timeval tv2 gettime
  • Linux:如何设置进程的时区?

    我需要设置在 Linux 机器上启动的各个进程的时区 我尝试设置TZ变量 在本地上下文中 但它不起作用 有没有一种方法可以使用与系统日期不同的系统日期从命令行运行应用程序 这可能听起来很愚蠢 但我需要一种sandbox系统日期将被更改的地方
  • 进程退出后 POSIX 名称信号量不会释放

    我正在尝试使用 POSIX 命名信号量进行跨进程同步 我注意到进程死亡或退出后 信号量仍然被系统打开 在进程 打开它 死亡或退出后是否有办法使其关闭 释放 早期的讨论在这里 当将信号量递减至零的进程崩溃时 如何恢复信号量 https sta
  • 确定我可以向文件句柄写入多少内容;将数据从一个 FH 复制到另一个 FH

    如何确定是否可以将给定数量的字节写入文件句柄 实际上是套接字 或者 如何 取消读取 我从其他文件句柄读取的数据 我想要类似的东西 n how much can I write w handle n read r handle buf n a
  • C++ Boost ASIO 简单的周期性定时器?

    我想要一个非常简单的周期性计时器每 50 毫秒调用我的代码 我可以创建一个始终休眠 50 毫秒的线程 但这很痛苦 我可以开始研究用于制作计时器的 Linux API 但它不可移植 I d like使用升压 我只是不确定这是否可能 boost
  • 如何查询X11显示分辨率?

    这似乎是一个简单的问题 但我找不到答案 如何查询 通过 X11 存在哪些监视器及其分辨率 查看显示宏 http tronche com gui x xlib display display macros html and 屏幕宏 http
  • 在 Mac OSX 上交叉编译 x86_64-unknown-linux-gnu 失败

    我尝试将我的 Rust 项目之一编译到 x86 64 unknown linux gnu 目标 cargo build target x86 64 unknown linux gnu Compiling deployer v0 1 0 fi
  • Capistrano 3 部署无法连接到 GitHub - 权限被拒绝(公钥)

    我使用 Capistrano v3 和 capistrano symfony gem 设置了以下部署脚本 我正在使用 Ubuntu 14 4 部署到 AWS EC2 实例 我正在连接从 AWS 下载的 pem 文件 我的deploy rb中
  • git 错误:无法处理 https

    当我尝试使用 git clone 时https xxx https xxx我收到以下错误我不处理协议 https 有人可以帮我吗 完整消息 dementrock dementrock A8Se git 克隆https git innosta
  • 为什么我可以在 /proc/pid/maps 输出中看到几个相同的段?

    测试在32位Linux上进行 代码如下 int foo int a int b int c a b return c int main int e 0 int d foo 1 2 printf d n d scanf d e return
  • 无法在 Perl 中找到 DBI.pm 模块

    我使用的是 CentOS 并且已经安装了 Perl 5 20 并且默认情况下存在 Perl 5 10 我正在使用 Perl 5 20 版本来执行 Perl 代码 我尝试使用 DBI 模块并收到此错误 root localhost perl
  • Python 脚本作为 Linux 服务/守护进程

    Hallo 我试图让 python 脚本作为服务 守护进程 在 ubuntu linux 上运行 网络上存在多种解决方案 例如 http pypi python org pypi python daemon http pypi python
  • 如何从 PROC 获取有关子进程的信息

    我正在尝试编写一个以几个进程作为参数的程序 然后父进程执行每个子进程并打印出一些相关的统计信息 示例 generate ls l 将生成一个程序 打印出有关 ls l 的一些统计信息 特别是其系统时间 用户时间和上下文切换次数 我不想使用
  • Monkeyrunner/jython 中未找到 JDBC 驱动程序错误

    我需要在中插入一些东西DB 我在用着JDBC as a connector jython the script mysql数据库和脚本正在运行CentOS 我的代码看起来像这样 from com android monkeyrunner i
  • Gearman,php 扩展问题:使用终端在 .. 中找不到类“GearmanWorker”,但可以在浏览器上使用

    我最近在 ubuntu 10 04 上安装了 gearman 并安装了它的 pecl 扩展 现在 当我在浏览器中运行一个 php 文件时 其中包含 client new GearmanWorker die var Dump client I

随机推荐