Windows下使用VNC鏈接CentOS7遠程桌面

在實際維護遠程linux服務器主機時,有時候純命令行模式可能沒法知足咱們的須要,這時候須要使用遠程主機的GUI模式,即能看到服務器的桌面,通常會使用兩種方式:Xmanager或者VNC。我一開始使用的是Xmanager,版本是Xmanager5 Enterprise,可是在鏈接服務器時,能夠鏈接上(已經看到主機名),卻沒法打開桌面,折騰了好久終於放棄,選擇了VNC,相比之下方便不少。下面就本身的實踐經驗小結下,須要的朋友能夠看看。
說明下我這裏CentOS主機已經安裝了Gohome桌面,沒有安裝的請安裝一個gui桌面。
1、Linux主機安裝VNC服務
一、安裝vnc-server
VNC分爲服務端和客戶端,linux服務器主機須要安裝vncserver,centos7下通常使用tigervnc。
root下執行命令:
#yum install -y tigervnc-server
linux

安裝完畢後須要配置。centos

二、配置vnc-server
服務器

進入目錄oracle

#cd /lib/systemd/system
#ls
app

咱們會看到有個service叫作vncserver@.service,這就是咱們須要的vnc服務。可是須要對它進行配置纔可使用。假設咱們當前爲root用戶配置遠程桌面,配置流程以下:dom

首先,複製該service,命名爲vncserver@:1.service,tcp

#cp vncserver@.service vncserver@:1.service
ide

而後修改vncserver@:1.serviceui

#vi vncserver@:1.service
this

看到以下文本:

[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=/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

這裏須要且只須要作一種替換:將< User>替換爲須要配置的用戶。注意由於root的home目錄就是/root/,而不是/home/root/,因此替換後文本以下:

[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=/sbin/runuser -l root -c 「/usr/bin/vncserver %i 」
PIDFile=/root/.vnc/%H%i.pid
ExecStop=/bin/sh -c ‘/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :’
[Install]
WantedBy=multi-user.target

若是是非root用戶,例如用戶admin,PIDFile處應該是:

ExecStart=/sbin/runuser -l admin -c 「/usr/bin/vncserver %i 」
PIDFile=/home/admin/.vnc/%H%i.pid

最後Esc+:wq保存退出。

三、啓動vnc-server

在剛纔的配置文件中,有這樣一段說明:

# Quick HowTo:
# 1. Copy this file to /etc/systemd/system/vncserver@:.service
# 2. Edit and vncserver parameters appropriately
# (「runuser -l -c /usr/bin/vncserver %i -arg1 -arg2」)
# 3. Run systemctl daemon-reload
# 4. Run `systemctl enable vncserver@:.service

即配置完後,還需執行

#systemctl daemon-reload
#systemctl enable vncserver@:1.service

而後開啓vnc服務

#systemctl start vncserver@:1.service

查看啓動是否成功

#systemctl status vncserver@:1.service
若是現實active即表示開啓成功。下面設置下vnc鏈接密碼,
執行
#vncpassword

提示輸入密碼並確認,這是供遠程鏈接時驗證用的,本身設置一下便可。配置好之後能夠重啓下vnc服務

#systemctl restart vncserver@:1.service
四、配置防火牆
vnc服務雖然開啓了,可是若是遠程客戶端須要鏈接,還須要爲防火牆增長配置以開放端口。通常vnc服務是以590+x做爲訪問端口,x爲配置的service@:x,例如此處的vncserver@:1.service,則端口是5901。
執行命令
#vi /etc/sysconfig/iptables

-A INPUT -p tcp -m state –state NEW -m tcp –dport 22 -j ACCEPT

下方添加配置

-A INPUT -p tcp -m state –state NEW -m tcp –dport 5901 -j ACCEPT

而後保存退出,重啓防火牆。到這裏基本的vnc服務端配置就結束了。

2、客戶端遠程鏈接

配置好了服務端的vnc服務後,遠程就能夠鏈接了。這裏使用的是win7下鏈接,客戶端使用的是tigervnc-1.5.0,百度下通常都有,下載後直接安裝,安裝過程當中能夠去掉做爲服務端的勾選,不過不要緊。以後進入安裝目錄,找到vncviewer.exe,雙擊執行,輸入ip和端口號,點擊connection便可,而後按照提示輸入以前配置的訪問密碼,回車,便可看到遠程的linux主機桌面。

3、開啓多個vncserver

有時候咱們可能須要不止一個用戶的桌面環境,好比我在遠程安裝oracle時,還須要一個oracle用戶的桌面環境,而以前僅僅配置了root用戶的,下面介紹下配置多用戶的vncserver。配置思路很簡單,就是配置多個vncserver@:n.service。

一、複製vncserver@.service

假設咱們的用戶已經創建好,這裏以admin爲例。首先以root用戶登陸,在

#cd /lib/systemd/system

目錄下,和前述同樣,拷貝配置文件,不過這裏不是:1,而是:2,數字能夠本身設置,通常遞增。

#cp vncserver@.service vncserver@:2.service

而後修改vncserver@:2.service

#vi vncserver@:2.service

修改配置

[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=/sbin/runuser -l admin -c 「/usr/bin/vncserver %i 」
PIDFile=/home/admin/.vnc/%H%i.pid
ExecStop=/bin/sh -c ‘/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :’
[Install]
WantedBy=multi-user.target

保存退出。而後按照配置文件提示,執行

#systemctl daemon-reload
#systemctl enable vncserver@:2.service
二、修改vnc登陸驗證密碼

執行完畢後,切換到admin帳戶,執行

$vncserver :2

會要求輸入驗證密碼

You will require a password to access your desktops.

Password:
Verify:
xauth: file /home/admin/.Xauthority does not exist

New ‘localhost.localdomain:2 (admin)’ desktop is localhost.localdomain:2

Creating default startup script /home/admin/.vnc/xstartup
Starting applications specified in /home/admin/.vnc/xstartup
Log file is /home/admin/.vnc/localhost.localdomain:2.log
三、啓動服務

以後切換回root,執行

#systemctl deamon-reload
#systemctl start vncserver@:2.service

這時候提示啓動不成功,執行命令

#vncserver :2

提示已經有一個vncserver as :2 running了,這時候咱們先要殺掉這個進程,執行命令

#vncserver -kill :2

但通常沒有用,那麼咱們

# ps -ef | grep vnc

查看vncserver :2的進程id,如pid爲1311,則執行

#kill -9 1311

而後再執行

#systemctl start vncserver@:2.service

仍是報錯,查看日誌,

#journalctl -xn
提示須要刪除/tmp/.X2-lock
執行
#rm /tmp/.X2-lock

再次啓動

#systemctl start vncserver@:2.service
仍是報錯,查看日誌,提示須要刪除/tmp/.X11-unix/X2
執行
#rm /tmp/.X11-unix/X2

再次啓動

#systemctl start vncserver@:2.service

終於不報錯了,而後查看狀態

#systemctl status vncserver@:2.service

發現已經啓動,則完成。以後注意不要忘了如前述配置防火牆。

到此爲止就結束了全部的配置,在實際啓動過程當中可能會遇到各類各樣的問題,你們只要靜下心來查看日誌,通常都能解決。有錯誤的地方,還望指正。



  • centos7 安裝tigervnc過程當中遇到的問題

centostigervnc

[root@localhost system]# systemctl daemon-reload [root@localhost system]# systemctl enable vncserver@:1.service [root@localhost system]# systemctl start vncserver@:1.service Job for vncserver@:1.service failed. See ‘systemctl status vncserver@:1.service’ and ‘journ alctl -xn’ for details.[root@localhost system]# systemctl status vncserver@:1.service vncserver@:1.service - Remote desktop service (VNC) Loaded: loaded (/etc/systemd/system/vncserver@:1.service; enabled) Active: failed (Result: exit-code) since Thu 2015-04-23 16:04:58 CST; 14s ago Process: 24764 ExecStart=/sbin/runuser -l root -c /usr/bin/vncserver :1 -geometry 1280x10 24 -depth 24 (code=exited, status=98) Process: 24760 ExecStartPre=/bin/sh -c /usr/bin/vncserver -kill %1 > /dev/null 2>&1 || : (code=exited, status=0/SUCCESS) Apr 23 16:04:58 localhost.localdomain systemd[1]: vncserver@:1.service: control proces…98 Apr 23 16:04:58 localhost.localdomain systemd[1]: Failed to start Remote desktop servi…). Apr 23 16:04:58 localhost.localdomain systemd[1]: Unit vncserver@:1.service entered fa…e. Hint: Some lines were ellipsized, use -l to show in full. [root@localhost system]#



把 vncserver@:1.service 中的 Type 參數設置為 simple 再執行 systemctl daemon-reload再執行 systemctl start vncserver:1.service便可解決

相關文章
相關標籤/搜索