CentOS7 下VNC Server遠程桌面配置詳解


VNC:VNC(Virtual Network Computing),為一種使用RFB協議的屏幕畫面分享及遠程操作軟件。此軟件借由網絡,可發送鍵盤與鼠標的動作及即時的屏幕畫面。VNC與操作系統無關,因此可跨平台使用,例如可用Windows連線到某Linux的計算機,反之亦同。甚至在沒有安裝客戶端程序的計算機中,只要有支持JAVA的瀏覽器,也可使用。VNC包含客戶端和服務器兩個操作軟件。
VNC Server:VNC服務器,接收VNC Viewer的連接請求,傳輸畫面到客戶端。本例需要在centos7上安裝VNC Server
VNC Viewer:VNC客戶端,將鍵盤和鼠標的動作轉遞給服務器,本例需要在windows上安裝Viewer連接到遠程的Linux服務器

一、如果當前系統沒有桌面環境,需要先安裝桌面環境。
1、更新系統
---------------------------------------------------------------------------------------------
[root@CentOS7 ~]# yum update     ##避免一些系統方面的意外錯誤,最好更新yum到最新,生產環境有業務在運行不建議更新
---------------------------------------------------------------------------------------------

2、安裝GNOME Desktop圖形桌面服務
---------------------------------------------------------------------------------------------
[root@CentOS7 ~]# yum groupinstall "GNOME Desktop"
---------------------------------------------------------------------------------------------

3、查看系統運行模式
---------------------------------------------------------------------------------------------
[root@CentOS7 ~]# systemctl get-default
---------------------------------------------------------------------------------------------

4、切換到桌面運行模式
---------------------------------------------------------------------------------------------
[root@CentOS7 ~]# systemctl set-default graphical.target
---------------------------------------------------------------------------------------------

5、啟動桌面模式
---------------------------------------------------------------------------------------------
[root@CentOS7 ~]# init 5
---------------------------------------------------------------------------------------------


二、VNC配置

1、安裝vnc,CentOS7默認使用tigervnc軟件提供vnc服務
---------------------------------------------------------------------------------------------
[root@CentOS7 ~]# yum install tigervnc-server
---------------------------------------------------------------------------------------------

2、啟動VNC服務
使用vncserver命令啟動VNC服務,命令格式為“vncserver :桌面號”,其中“桌面號”用“數字”的方式表示,每個用戶連接需要占用1個桌面
啟動編號為1的桌面示例如下
---------------------------------------------------------------------------------------------
[laopi@CentOS7 ~]$ vncserver :1

You will require a password to access your desktops.

Password:                                ##登錄vnc的密碼,以后可用通過vncpasswd命令更改密碼
Verify:                              ##重新輸入登錄vnc的密碼
Would you like to enter a view-only password (y/n)? n         ##是否設置只查看用戶密碼,這里不設置
A view-only password is not used

New 'CentOS77:1 (laopi)' desktop is CentOS7:1

Creating default startup script /home/laopi/.vnc/xstartup
Creating default config /home/laopi/.vnc/config
Starting applications specified in /home/laopi/.vnc/xstartup
Log file is /home/laopi/.vnc/CentOS7:1.log
---------------------------------------------------------------------------------------------
命令的執行是在需要遠程登陸的laopi用戶下執行的,同時也是第一次執行,會在此用戶的主目錄(/home/laopi/)下生成.vnc子目錄和相應的配置文件,同時需要輸入密碼(vncviewer端用此用戶訪問的密碼),這個密碼被加密保存在此用戶主目錄下的.vnc子目錄(/home/laopi/.vnc/passwd)中;同時在用戶主目錄下的.vnc子目錄中為用戶自動建立xstartup配置文件(/home/laopi/.vnc/xstartup),在每次啟動VNC服務時,都會讀取該文件中的配置信息。上面的是添加普通用戶通過VNC訪問權限,如果想添加其他用戶訪問權限,需要在相應的用戶命令提示符下進行上面的操作(如test用戶也需要執行[test@ localhost ~]$ vncserver :1 在相應的主目錄下生成對應的.vnc子目錄)。對不同用戶的訪問密碼更改也需要在相應的命令提示符下操作。
在/home/laopi/.vnc/目錄下還有一個“CentOS7:1.pid”文件,這個文件記錄着啟動VNC后對應操作系統的進程號,用於停止VNC服務時准確定位進程號.

3、VNC服務使用的端口號與桌面號的關系
VNC服務使用的端口號與桌面號相關,VNC使用TCP端口從5900開始,對應關系如下
桌面號為“1” ---- 端口號為5901
桌面號為“2” ---- 端口號為5902
桌面號為“3” ---- 端口號為5903
.......
基於上面的介紹,如果Linux開啟了防火牆功能,就需要手工開啟相應的端口.

4、防火牆設置,這里我就粗暴的把防火牆關了

---------------------------------------------------------------------------------------------
[laopi@CentOS7 ~]# systemctl stop firewalld.service       ##停止firewall
[laopi@CentOS7 ~]# systemctl disable firewalld.service       ##禁止firewall開機啟動

---------------------------------------------------------------------------------------------

5、測試VNC服務,通過RealVNC Viewer客戶端軟件進行測試

設置登錄信息

進行登錄

 

登錄成功后輸入系統的用戶名密碼就可用登錄了

 

三、配置多個桌面
可以使用如下的方法啟動多個桌面的VNC
vncserver :1
vncserver :2
vncserver :3
……
但是這種手工啟動的方法在服務器重新啟動之后將失效,因此,下面介紹如何讓系統自動管理多個桌面的VNC,方法是創建 Systemd Unit文件.
文件的格式為:vncserver@:桌面號.service,Unit文件方便快速的啟動,停止,重啟服務

1、為laopi用戶創建 Systemd Unit文件。(第一個用戶vncserver@:1.service,第二個用戶vncserver@:2.service,其他以此類推),可用通過復制模板文件方式創建
---------------------------------------------------------------------------------------------
[root@CentOS7 ~]# cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service        ##需要root用戶操作
---------------------------------------------------------------------------------------------

3、修改/etc/systemd/system/vncserver@:1.service文件,復制過來的這個文件是個模板文件,替換文件里面的<user>為需要登陸的用戶, Type由默認的forking改為simple,這里如果不更改后面的啟動會報錯
---------------------------------------------------------------------------------------------
[user1@localhost ~]$ vim /etc/systemd/system/vncserver\@\:1.service
[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target
[Service]
Type=simple                                 ##這里將forking改為simple
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
ExecStart=/usr/sbin/runuser -l laopi -c "/usr/bin/vncserver %i"          ##這里將<user>更改為需要登陸的用戶laopi
PIDFile=/home/laopi/.vnc/%H%i.pid                        ##這里將<user>更改為需要登陸的用戶laopi
ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
[Install]
WantedBy=multi-user.target
---------------------------------------------------------------------------------------------

3、刷新systemctl
---------------------------------------------------------------------------------------------
[root@CentOS7 ~]# systemctl daemon-reload
---------------------------------------------------------------------------------------------

4、啟動服務
---------------------------------------------------------------------------------------------
[root@CentOS7 ~]# systemctl start vncserver@:1.service     #啟動
---------------------------------------------------------------------------------------------
如果啟動服務器失敗如果如下所示:
[root@CentOS7 ~]# systemctl start vncserver@:1.service
Job for vncserver@:1.service failed because a configured resource limit was exceeded. See "systemctl status vncserver@:1.service" and "journalctl -xe" for details.
---------------------------------------------------------------------------------------------
上面的錯誤很有可能是Type沒有由默認的forking改為simple,更改后重啟服務,一次不好用就多重啟幾次,因為這個原因我浪費的大半天的時間,很多文章寫的都不需要更改這個但是我在CentOS7.7下只有更改了這個選項才好用,不知道為什么,也有說通過
這個方法解決:刪除/tmp/.X11-unix/ 目錄,再啟用一次即可,這個沒有驗證只是記錄下

5、設置服務開機啟動
---------------------------------------------------------------------------------------------
[root@CentOS7 ~]# systemctl enable vncserver@:1.service
---------------------------------------------------------------------------------------------

6、常用選項
---------------------------------------------------------------------------------------------
systemctl stop vncserver@:1.service            #關閉
systemctl restart vncserver@:1.service             #重啟
---------------------------------------------------------------------------------------------

7、查看服務器的狀態

 

上面的狀態才是正常的,如果不是請進行排查

 

注意:上面的配置完成以后重啟系統,當常看vncserver@:1.service的服務時狀態不正常,但是依然可用連接,重啟服務后狀態正常,暫時還不知道什么原因,如下所示會有紅字體的報錯

 

 

 參考:

http://blog.itpub.net/31559985/viewspace-2674525/

https://blog.51cto.com/shaonian/2090283

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM