本篇文章為大家展示了怎么在centos7環(huán)境下配置vncserver,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過(guò)這篇文章的詳細(xì)介紹希望你能有所收獲。
成都創(chuàng)新互聯(lián)公司專(zhuān)注為客戶(hù)提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、旅順口網(wǎng)絡(luò)推廣、小程序開(kāi)發(fā)、旅順口網(wǎng)絡(luò)營(yíng)銷(xiāo)、旅順口企業(yè)策劃、旅順口品牌公關(guān)、搜索引擎seo、人物專(zhuān)訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);成都創(chuàng)新互聯(lián)公司為所有大學(xué)生創(chuàng)業(yè)者提供旅順口建站搭建服務(wù),24小時(shí)服務(wù)熱線:18982081108,官方網(wǎng)址:www.cdcxhl.com
管理Linux服務(wù)器時(shí),在多數(shù)情況下,大家都是通過(guò)SSH連接到目標(biāo)服務(wù)器,在命令行界面下執(zhí)行各項(xiàng)管理操作,不過(guò),某些時(shí)候我們也希望能在界面化的環(huán)境中執(zhí)行操作。本文就將向大家介紹,通過(guò)配置vnc服務(wù),以圖形化界面遠(yuǎn)程訪問(wèn)目標(biāo)服務(wù)器。
有些童鞋在之前的工作和學(xué)習(xí)過(guò)程中,可能對(duì)vncserver已經(jīng)很熟悉了,那這里為什么還要介紹配置vnc服務(wù)的方式呢,根本原因是進(jìn)入到CentOS 7版本之后,由于Linux對(duì)服務(wù)管理方式的變化,vncsrever的配置較之前也有了很大不同,為了能使新接觸CentOS7的親們少走些彎路,這里通過(guò)實(shí)踐操作,學(xué)習(xí)在CentOS7環(huán)境下如何配置VNC服務(wù)。
提示1:文中操作環(huán)境基于CentOS 7,當(dāng)然也同樣適用于RHEL 7。
2:以下操作如非特別注明,均是在root用戶(hù)下執(zhí)行。
一、安裝VNC
要以界面化方式訪問(wèn)服務(wù)器,那么首先我們要確認(rèn)目標(biāo)服務(wù)器安裝了圖形化環(huán)境,Linux系統(tǒng)下常見(jiàn)的桌面環(huán)境有GNOME和KDE,這里我們首先通過(guò)Group的方式安裝GNOME桌面,執(zhí)行命令如下:
# yum -y groupinstall "GNOME Desktop"
現(xiàn)在就可以在我們的Centos7服務(wù)器上安裝vncserver了,安裝tigervnc服務(wù)端,執(zhí)行命令如下:
# yum -y install tigervnc-server
二、配置VNC
對(duì)于Linux7之前的系統(tǒng),安裝完成后會(huì)通過(guò)/etc/sysconfig/vncservers文件進(jìn)行配置,進(jìn)入7.0版本后,這個(gè)文件仍然存在,但已經(jīng)失去了實(shí)際意義,其內(nèi)容只有一行:
# more /etc/sysconfig/vncservers
# THIS FILE HAS BEEN REPLACED BY /lib/systemd/system/vncserver@.service
這就跟Linux7之后服務(wù)管理方式的變化有關(guān)了,接下來(lái)我們就演示如何將vncserver配置為systemd能夠管理的服務(wù)。
tigervnc-server安裝后,自動(dòng)創(chuàng)建一個(gè)名為vncserver@.server的模塊文件,也就是前面/etc/sysconfig/vncservers文件內(nèi)容中所指向的路徑。
我們來(lái)看一下這個(gè)文件中的內(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
# with the actual user name. Leave the remaining lines of the file unmodified
# (ExecStart=/usr/sbin/runuser -l
-c "/usr/bin/vncserver %i" # PIDFile=/home/
/.vnc/%H%i.pid) # 3. Run `systemctl daemon-reload`
# 4. Run `systemctl enable vncserver@:
.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
-c "/usr/bin/vncserver %i" PIDFile=/home/
/.vnc/%H%i.pid ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
[Install]
WantedBy=multi-user.target
對(duì)systemd服務(wù)比較熟悉的朋友,根據(jù)這個(gè)模塊文件,應(yīng)該就能快速的進(jìn)行配置。即便是對(duì)于systemd不太熟悉的朋友也沒(méi)有關(guān)系,一方面該文件的內(nèi)容其實(shí)已經(jīng)對(duì)過(guò)程描述的較為清晰,專(zhuān)門(mén)寫(xiě)了“# Quick HowTo:”,對(duì)如何使用進(jìn)行了簡(jiǎn)單明了的介紹;另一方面,接下來(lái)咱們會(huì)一步步的進(jìn)行演示,包管大家都能明白。
基本上,我們也是按照Quick HowTo中的步驟操作
1、基于模板復(fù)制文件到目標(biāo)路徑下:
# cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service
2、編輯新復(fù)制出來(lái)vncserver@:1.server文件,根據(jù)實(shí)際情況將變量替換為適當(dāng)?shù)闹?。所謂實(shí)際情況,指的主要是兩項(xiàng):服務(wù)運(yùn)行的所屬USER,以及服務(wù)的Display Number,默認(rèn)為:1。
關(guān)于DisplayNumber,這里多補(bǔ)充幾句。單臺(tái)服務(wù)器允許同時(shí)啟動(dòng)多個(gè)vncserver服務(wù),不同的vncserver運(yùn)行于不同的進(jìn)程,提供不同的端口服務(wù),這是毋庸置疑的,同時(shí)每個(gè)vncserver在啟動(dòng)時(shí)要指定一個(gè)Display Number,指定的Display Number大于0并且不重復(fù)即可,如果啟動(dòng)vncserver時(shí)沒(méi)有指定,那么默認(rèn)的Display Number會(huì)從1開(kāi)始遞增。如果同一臺(tái)服務(wù)器中多個(gè)vncserver啟動(dòng)時(shí)指定了相同的Display Number,那么只會(huì)有一個(gè)能夠啟動(dòng)成功。
接下來(lái)我們編輯vncserver@:1.service文件,修改配置項(xiàng):
# 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
-c "/usr/bin/vncserver %i" PIDFile=/home/
/.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 || :'
總的來(lái)說(shuō),主要做了兩處改動(dòng),首先是將%i替換為:1,其次是將替換為jss。 保存退出。
3、重新加載systemd的配置
# systemctl daemon-reload
4、啟用這個(gè)服務(wù),將vncserver服務(wù)設(shè)置為開(kāi)機(jī)自啟動(dòng):
# systemctl enable vncserver@:1.service
至此,配置部分基本告一段落,但是注意,這個(gè)時(shí)候先不要啟動(dòng)該vncserver,因?yàn)関ncserver的訪問(wèn)密鑰文件還未創(chuàng)建,我們要為vncserver創(chuàng)建密鑰后再啟動(dòng)該服務(wù)項(xiàng)。
由于前面的配置過(guò)程中,指定vncserver運(yùn)行在jss用戶(hù)下,因此,首先切換到j(luò)ss用戶(hù):# su - jss
執(zhí)行vncpasswd,并輸入訪問(wèn)密碼,操作如下:
$ vncpasswd
Password:
Verify:
然后返回root用戶(hù)下,以后就可以通過(guò)systemd來(lái)控制vncserver服務(wù)的啟停了。例如,啟動(dòng)服務(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)被成功啟動(dòng)起來(lái)了。
三、客戶(hù)端連接
當(dāng)vnc服務(wù)啟動(dòng)之后,我們就可以在客戶(hù)端通過(guò)vncviewer之類(lèi)的工具連接服務(wù)器了。在指定服務(wù)器地址時(shí),需要填入目標(biāo)服務(wù)器的IP地址和服務(wù)的端口號(hào),一般來(lái)說(shuō),目標(biāo)服務(wù)器的IP地址肯定是知道的,但端口應(yīng)該填什么呢。
Vnc服務(wù)所使用的端口號(hào)從5900開(kāi)始,第一個(gè)運(yùn)行的vnc服務(wù)啟動(dòng)后就是運(yùn)行在5901的端口上,其它依次遞增。如果要在linux系統(tǒng)中查詢(xún)的話(huà),可以通過(guò)netstat或ps之類(lèi)的命令,例如:# 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
這里我們就能看到,當(dāng)前這個(gè)vnc服務(wù)運(yùn)行在5901的端口上。如果該服務(wù)器上同時(shí)啟動(dòng)了多個(gè)vnc服務(wù),那么通過(guò)查看進(jìn)程的方式,也能區(qū)分出哪個(gè)服務(wù)運(yùn)行于哪個(gè)用戶(hù)及哪個(gè)端口。如上圖所示,指定目標(biāo)服務(wù)器的IP地址和端口,點(diǎn)擊”O(jiān)K”即可。
就像我們前面提到過(guò)的,同一臺(tái)服務(wù)器上可以運(yùn)行多個(gè)vnc服務(wù),不同vnc服務(wù)可以運(yùn)行在不同的用戶(hù)下,如果需要配置更多的vnc服務(wù),那么可以重復(fù)步驟2中的操作,創(chuàng)建更多的vncserver@.service文件,為其指定不同的DisplayNumber即可。
四、vncserver服務(wù)常用管理操作
啟用服務(wù)開(kāi)機(jī)自啟動(dòng):
# systemctl enable vncserver@:1.service
禁用服務(wù)開(kāi)機(jī)自啟動(dòng):
# systemctl disable vncserver@:1.service
服務(wù)啟動(dòng):
# 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,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。