本篇文章為大家展示了怎么在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服務,那么通過查看進程的方式,也能區分出哪個服務運行于哪個用戶及哪個端口。
如上圖所示,指定目標服務器的IP地址和端口,點擊”OK”即可。
就像我們前面提到過的,同一臺服務器上可以運行多個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,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。