溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在centos7環境下配置vncserver

發布時間:2021-11-09 10:12:00 來源:億速云 閱讀:376 作者:柒染 欄目:建站服務器

本篇文章為大家展示了怎么在centos7環境下配置vncserver,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

管理Linux服務器時,在多數情況下,大家都是通過SSH連接到目標服務器,在命令行界面下執行各項管理操作,不過,某些時候我們也希望能在界面化的環境中執行操作。本文就將向大家介紹,通過配置vnc服務,以圖形化界面遠程訪問目標服務器。

有些童鞋在之前的工作和學習過程中,可能對vncserver已經很熟悉了,那這里為什么還要介紹配置vnc服務的方式呢,根本原因是進入到CentOS 7版本之后,由于Linux對服務管理方式的變化,vncsrever的配置較之前也有了很大不同,為了能使新接觸CentOS7的親們少走些彎路,這里通過實踐操作,學習在CentOS7環境下如何配置VNC服務。

提示

1:文中操作環境基于CentOS 7,當然也同樣適用于RHEL 7。

2:以下操作如非特別注明,均是在root用戶下執行。

一、安裝VNC

要以界面化方式訪問服務器,那么首先我們要確認目標服務器安裝了圖形化環境,Linux系統下常見的桌面環境有GNOME和KDE,這里我們首先通過Group的方式安裝GNOME桌面,執行命令如下:

# yum -y groupinstall "GNOME Desktop"

現在就可以在我們的Centos7服務器上安裝vncserver了,安裝tigervnc服務端,執行命令如下:

# yum -y install tigervnc-server


二、配置VNC

對于Linux7之前的系統,安裝完成后會通過/etc/sysconfig/vncservers文件進行配置,進入7.0版本后,這個文件仍然存在,但已經失去了實際意義,其內容只有一行:

# more /etc/sysconfig/vncservers 

# THIS FILE HAS BEEN REPLACED BY /lib/systemd/system/vncserver@.service

這就跟Linux7之后服務管理方式的變化有關了,接下來我們就演示如何將vncserver配置為systemd能夠管理的服務。

tigervnc-server安裝后,自動創建一個名為vncserver@.server的模塊文件,也就是前面/etc/sysconfig/vncservers文件內容中所指向的路徑。

我們來看一下這個文件中的內容:

# more /lib/systemd/system/vncserver@.service 

# The vncserver service unit file

#

# Quick HowTo:

# 1. Copy this file to /etc/systemd/system/vncserver@.service

# 2. Edit /etc/systemd/system/vncserver@.service, replacing <USER>

#    with the actual user name. Leave the remaining lines of the file unmodified

#    (ExecStart=/usr/sbin/runuser -l <USER> -c "/usr/bin/vncserver %i"

#     PIDFile=/home/<USER>/.vnc/%H%i.pid)

# 3. Run `systemctl daemon-reload`

# 4. Run `systemctl enable vncserver@:<display>.service`

#

# DO NOT RUN THIS SERVICE if your local area network is

# untrusted!  For a secure way of using VNC, you should

# limit connections to the local host and then tunnel from

# the machine you want to view VNC on (host A) to the machine

# whose VNC output you want to view (host B)

#

# [user@hostA ~]$ ssh -v -C -L 590N:localhost:590M hostB

#

# this will open a connection on port 590N of your hostA to hostB's port 590M

# (in fact, it ssh-connects to hostB and then connects to localhost (on hostB).

# See the ssh man page for details on port forwarding)

#

# You can then point a VNC client on hostA at vncdisplay N of localhost and with

# the help of ssh, you end up seeing what hostB makes available on port 590M

#

# Use "-nolisten tcp" to prevent X connections to your VNC server via TCP.

#

# Use "-localhost" to prevent remote VNC clients connecting except when

# doing so through a secure tunnel.  See the "-via" option in the

# `man vncviewer' manual page.



[Unit]

Description=Remote desktop service (VNC)

After=syslog.target network.target


[Service]

Type=forking

# Clean any existing files in /tmp/.X11-unix environment

ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'

ExecStart=/usr/sbin/runuser -l <USER> -c "/usr/bin/vncserver %i"

PIDFile=/home/<USER>/.vnc/%H%i.pid

ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'


[Install]

WantedBy=multi-user.target

對systemd服務比較熟悉的朋友,根據這個模塊文件,應該就能快速的進行配置。即便是對于systemd不太熟悉的朋友也沒有關系,一方面該文件的內容其實已經對過程描述的較為清晰,專門寫了“# Quick HowTo:”,對如何使用進行了簡單明了的介紹;另一方面,接下來咱們會一步步的進行演示,包管大家都能明白。


基本上,我們也是按照Quick HowTo中的步驟操作

1、基于模板復制文件到目標路徑下:

# cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service

2、編輯新復制出來vncserver@:1.server文件,根據實際情況將變量替換為適當的值。所謂實際情況,指的主要是兩項:服務運行的所屬USER,以及服務的Display Number,默認為:1。

關于DisplayNumber,這里多補充幾句。單臺服務器允許同時啟動多個vncserver服務,不同的vncserver運行于不同的進程,提供不同的端口服務,這是毋庸置疑的,同時每個vncserver在啟動時要指定一個Display Number,指定的Display Number大于0并且不重復即可,如果啟動vncserver時沒有指定,那么默認的Display Number會從1開始遞增。如果同一臺服務器中多個vncserver啟動時指定了相同的Display Number,那么只會有一個能夠啟動成功。

接下來我們編輯vncserver@:1.service文件,修改配置項:

# vim /etc/systemd/system/vncserver@:1.service


原始配置如下:

[Service]

Type=forking

# Clean any existing files in /tmp/.X11-unix environment

ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'

ExecStart=/usr/sbin/runuser -l <USER> -c "/usr/bin/vncserver %i"

PIDFile=/home/<USER>/.vnc/%H%i.pid

ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'


修改后的配置如下:

[Service]

Type=forking

# Clean any existing files in /tmp/.X11-unix environment

ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill :1 > /dev/null 2>&1 || :'

ExecStart=/usr/sbin/runuser -l jss -c "/usr/bin/vncserver :1"

PIDFile=/home/jss/.vnc/%H:1.pid

ExecStop=/bin/sh -c '/usr/bin/vncserver -kill :1 > /dev/null 2>&1 || :'


總的來說,主要做了兩處改動,首先是將%i替換為:1,其次是將<USER>替換為jss。

保存退出。


3、重新加載systemd的配置

# systemctl daemon-reload


4、啟用這個服務,將vncserver服務設置為開機自啟動:

#  systemctl enable vncserver@:1.service


至此,配置部分基本告一段落,但是注意,這個時候先不要啟動該vncserver,因為vncserver的訪問密鑰文件還未創建,我們要為vncserver創建密鑰后再啟動該服務項。


由于前面的配置過程中,指定vncserver運行在jss用戶下,因此,首先切換到jss用戶:

# su - jss

執行vncpasswd,并輸入訪問密碼,操作如下:

$ vncpasswd 

Password:

Verify:


然后返回root用戶下,以后就可以通過systemd來控制vncserver服務的啟停了。

例如,啟動服務:

# systemctl start vncserver@:1.service


查看服務狀態:

# systemctl status vncserver@:1.service        

● vncserver@:1.service - Remote desktop service (VNC)

   Loaded: loaded (/etc/systemd/system/vncserver@:1.service; disabled; vendor preset: disabled)

   Active: active (running) since Mon xxxx-02-06 14:23:51 CST; 1min ago

  Process: 29009 ExecStart=/usr/sbin/runuser -l jss -c /usr/bin/vncserver :1 (code=exited, status=0/SUCCESS)

  Process: 29007 ExecStartPre=/bin/sh -c /usr/bin/vncserver -kill :1 > /dev/null 2>&1 || : (code=exited, status=0/SUCCESS)

 Main PID: 29035 (Xvnc)

   CGroup: /system.slice/system-vncserver.slice/vncserver@:1.service

           ? 29035 /usr/bin/Xvnc :1 -desktop localhost.localdomain:1 (jss) -auth /home/jss/.Xauthority -geometry 1024x768 -rfbwait 30000 -rfbauth /home/jss/.vnc/pass...


Feb 06 14:23:48 localhost.localdomain systemd[1]: Starting Remote desktop service (VNC)...

Feb 06 14:23:51 localhost.localdomain systemd[1]: Started Remote desktop service (VNC).

可以看到,服務處理active狀態,已經被成功啟動起來了。


三、客戶端連接

當vnc服務啟動之后,我們就可以在客戶端通過vncviewer之類的工具連接服務器了。在指定服務器地址時,需要填入目標服務器的IP地址和服務的端口號,一般來說,目標服務器的IP地址肯定是知道的,但端口應該填什么呢。


Vnc服務所使用的端口號從5900開始,第一個運行的vnc服務啟動后就是運行在5901的端口上,其它依次遞增。如果要在linux系統中查詢的話,可以通過netstat或ps之類的命令,例如:

# ps -ef | grep vnc

root     10936 10780  0 14:31 pts/0    00:00:00 grep --color=auto vnc

jss      29035     1  0 Feb06 ?        00:00:00 /usr/bin/Xvnc :1 -desktop localhost.localdomain:1 (jss) -auth /home/jss/.Xauthority -geometry 1024x768 -rfbwait 30000 -rfbauth /home/jss/.vnc/passwd -rfbport 5901 -fp catalogue:/etc/X11/fontpath.d -pn


這里我們就能看到,當前這個vnc服務運行在5901的端口上。如果該服務器上同時啟動了多個vnc服務,那么通過查看進程的方式,也能區分出哪個服務運行于哪個用戶及哪個端口。

怎么在centos7環境下配置vncserver

如上圖所示,指定目標服務器的IP地址和端口,點擊”OK”即可。

 

怎么在centos7環境下配置vncserver


就像我們前面提到過的,同一臺服務器上可以運行多個vnc服務,不同vnc服務可以運行在不同的用戶下,如果需要配置更多的vnc服務,那么可以重復步驟2中的操作,創建更多的vncserver@.service文件,為其指定不同的DisplayNumber即可。


四、vncserver服務常用管理操作


啟用服務開機自啟動:

# systemctl enable vncserver@:1.service

禁用服務開機自啟動:

# systemctl disable vncserver@:1.service

服務啟動:

# systemctl start vncserver@:1.service

服務停止:

# systemctl stop vncserver@:1.service

查看服務狀態:

# systemctl status vncserver@:1.service

上述內容就是怎么在centos7環境下配置vncserver,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女