您好,登錄后才能下訂單哦!
本篇文章為大家展示了怎么在centos7環(huán)境下配置vncserver,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
管理Linux服務(wù)器時,在多數(shù)情況下,大家都是通過SSH連接到目標服務(wù)器,在命令行界面下執(zhí)行各項管理操作,不過,某些時候我們也希望能在界面化的環(huán)境中執(zhí)行操作。本文就將向大家介紹,通過配置vnc服務(wù),以圖形化界面遠程訪問目標服務(wù)器。
有些童鞋在之前的工作和學習過程中,可能對vncserver已經(jīng)很熟悉了,那這里為什么還要介紹配置vnc服務(wù)的方式呢,根本原因是進入到CentOS 7版本之后,由于Linux對服務(wù)管理方式的變化,vncsrever的配置較之前也有了很大不同,為了能使新接觸CentOS7的親們少走些彎路,這里通過實踐操作,學習在CentOS7環(huán)境下如何配置VNC服務(wù)。
提示1:文中操作環(huán)境基于CentOS 7,當然也同樣適用于RHEL 7。
2:以下操作如非特別注明,均是在root用戶下執(zhí)行。
一、安裝VNC
要以界面化方式訪問服務(wù)器,那么首先我們要確認目標服務(wù)器安裝了圖形化環(huán)境,Linux系統(tǒng)下常見的桌面環(huán)境有GNOME和KDE,這里我們首先通過Group的方式安裝GNOME桌面,執(zhí)行命令如下:
# yum -y groupinstall "GNOME Desktop"
現(xiàn)在就可以在我們的Centos7服務(wù)器上安裝vncserver了,安裝tigervnc服務(wù)端,執(zhí)行命令如下:
# yum -y install tigervnc-server
二、配置VNC
對于Linux7之前的系統(tǒng),安裝完成后會通過/etc/sysconfig/vncservers文件進行配置,進入7.0版本后,這個文件仍然存在,但已經(jīng)失去了實際意義,其內(nèi)容只有一行:
# more /etc/sysconfig/vncservers
# THIS FILE HAS BEEN REPLACED BY /lib/systemd/system/vncserver@.service
這就跟Linux7之后服務(wù)管理方式的變化有關(guān)了,接下來我們就演示如何將vncserver配置為systemd能夠管理的服務(wù)。
tigervnc-server安裝后,自動創(chuàng)建一個名為vncserver@.server的模塊文件,也就是前面/etc/sysconfig/vncservers文件內(nèi)容中所指向的路徑。
我們來看一下這個文件中的內(nèi)容:
# 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服務(wù)比較熟悉的朋友,根據(jù)這個模塊文件,應(yīng)該就能快速的進行配置。即便是對于systemd不太熟悉的朋友也沒有關(guān)系,一方面該文件的內(nèi)容其實已經(jīng)對過程描述的較為清晰,專門寫了“# Quick HowTo:”,對如何使用進行了簡單明了的介紹;另一方面,接下來咱們會一步步的進行演示,包管大家都能明白。
基本上,我們也是按照Quick HowTo中的步驟操作
1、基于模板復制文件到目標路徑下:
# cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service
2、編輯新復制出來vncserver@:1.server文件,根據(jù)實際情況將變量替換為適當?shù)闹怠K^實際情況,指的主要是兩項:服務(wù)運行的所屬USER,以及服務(wù)的Display Number,默認為:1。
關(guān)于DisplayNumber,這里多補充幾句。單臺服務(wù)器允許同時啟動多個vncserver服務(wù),不同的vncserver運行于不同的進程,提供不同的端口服務(wù),這是毋庸置疑的,同時每個vncserver在啟動時要指定一個Display Number,指定的Display Number大于0并且不重復即可,如果啟動vncserver時沒有指定,那么默認的Display Number會從1開始遞增。如果同一臺服務(wù)器中多個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、啟用這個服務(wù),將vncserver服務(wù)設(shè)置為開機自啟動:
# systemctl enable vncserver@:1.service
至此,配置部分基本告一段落,但是注意,這個時候先不要啟動該vncserver,因為vncserver的訪問密鑰文件還未創(chuàng)建,我們要為vncserver創(chuàng)建密鑰后再啟動該服務(wù)項。
由于前面的配置過程中,指定vncserver運行在jss用戶下,因此,首先切換到j(luò)ss用戶:# su - jss
執(zhí)行vncpasswd,并輸入訪問密碼,操作如下:
$ vncpasswd
Password:
Verify:
然后返回root用戶下,以后就可以通過systemd來控制vncserver服務(wù)的啟停了。例如,啟動服務(wù):
# systemctl start vncserver@:1.service
查看服務(wù)狀態(tài):# 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).
可以看到,服務(wù)處理active狀態(tài),已經(jīng)被成功啟動起來了。
三、客戶端連接
當vnc服務(wù)啟動之后,我們就可以在客戶端通過vncviewer之類的工具連接服務(wù)器了。在指定服務(wù)器地址時,需要填入目標服務(wù)器的IP地址和服務(wù)的端口號,一般來說,目標服務(wù)器的IP地址肯定是知道的,但端口應(yīng)該填什么呢。
Vnc服務(wù)所使用的端口號從5900開始,第一個運行的vnc服務(wù)啟動后就是運行在5901的端口上,其它依次遞增。如果要在linux系統(tǒng)中查詢的話,可以通過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服務(wù)運行在5901的端口上。如果該服務(wù)器上同時啟動了多個vnc服務(wù),那么通過查看進程的方式,也能區(qū)分出哪個服務(wù)運行于哪個用戶及哪個端口。如上圖所示,指定目標服務(wù)器的IP地址和端口,點擊”O(jiān)K”即可。
就像我們前面提到過的,同一臺服務(wù)器上可以運行多個vnc服務(wù),不同vnc服務(wù)可以運行在不同的用戶下,如果需要配置更多的vnc服務(wù),那么可以重復步驟2中的操作,創(chuàng)建更多的vncserver@.service文件,為其指定不同的DisplayNumber即可。
四、vncserver服務(wù)常用管理操作
啟用服務(wù)開機自啟動:
# systemctl enable vncserver@:1.service
禁用服務(wù)開機自啟動:
# systemctl disable vncserver@:1.service
服務(wù)啟動:
# systemctl start vncserver@:1.service
服務(wù)停止:
# systemctl stop vncserver@:1.service
查看服務(wù)狀態(tài):
# systemctl status vncserver@:1.service
上述內(nèi)容就是怎么在centos7環(huán)境下配置vncserver,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。