Windows下使用VNC連接CentOS7遠程桌面
在實際維護遠程linux服務器主機時,有時候純命令行模式可能無法滿足我們的需要,這時候需要使用遠程主機的GUI模式,即能看到服務器的桌面,一般會使用兩種方式:Xmanager或者VNC。我一開始使用的是Xmanager,版本是Xmanager5 Enterprise,但是在連接服務器時,可以連接上(已經看到主機名),卻無法打開桌面,折騰了很久終於放棄,選擇了VNC,相比之下方便很多。下面就自己的實踐經驗小結下,需要的朋友可以看看。
說明下我這裏CentOS主機已經安裝了Gohome桌面,沒有安裝的請安裝一個gui桌面。
一、Linux主機安裝VNC服務
1、安裝vnc-server
VNC分為服務端和客戶端,linux服務器主機需要安裝vncserver,centos7下一般使用tigervnc。
#yum install -y tigervnc-server1
安裝完畢後需要配置。
2、配置vnc-server
進入目錄
#cd /lib/systemd/system#ls12
我們會看到有個service叫做[email protected],這就是我們需要的vnc服務。但是需要對它進行配置才可以使用。假設我們當前為root用戶配置遠程桌面,配置流程如下:
首先,復制該service,命名為vncserver@:1.service,
#cp [email protected] vncserver@:1.service1
然後修改vncserver@:1.service
#vi vncserver@:1.service1
看到如下文本:
[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保存退出。
3、啟動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. Runsystemctl daemon-reload
# 4. Run `systemctl enable vncserver@:.service
即配置完後,還需執行
#systemctl daemon-reload#systemctl enable vncserver@:1.service12
然後開啟vnc服務
#systemctl start vncserver@:1.service1
查看啟動是否成功
#systemctl status vncserver@:1.service1
如果現實active即表示開啟成功。下面設置下vnc連接密碼,
執行
#vncpassword1
提示輸入密碼並確認,這是供遠程連接時驗證用的,自己設置一下即可。配置好以後可以重啟下vnc服務
#systemctl restart vncserver@:1.service1
4、配置防火墻
vnc服務雖然開啟了,但是如果遠程客戶端需要連接,還需要為防火墻增加配置以開放端口。一般vnc服務是以590+x作為訪問端口,x為配置的service@:x,例如此處的vncserver@:1.service,則端口是5901。
執行命令
#vi /etc/sysconfig/iptables1
在
-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服務端配置就結束了。
二、客戶端遠程連接
配置好了服務端的vnc服務後,遠程就可以連接了。這裏使用的是win7下連接,客戶端使用的是tigervnc-1.5.0,百度下一般都有,下載後直接安裝,安裝過程中可以去掉作為服務端的勾選,不過沒關系。之後進入安裝目錄,找到vncviewer.exe,雙擊執行,輸入ip和端口號,點擊connection即可,然後按照提示輸入之前配置的訪問密碼,回車,即可看到遠程的linux主機桌面。
三、開啟多個vncserver
有時候我們可能需要不止一個用戶的桌面環境,比如我在遠程安裝oracle時,還需要一個oracle用戶的桌面環境,而之前僅僅配置了root用戶的,下面介紹下配置多用戶的vncserver。配置思路很簡單,就是配置多個vncserver@:n.service。
1、復制[email protected]
假設我們的用戶已經建立好,這裏以admin為例。首先以root用戶登錄,在
#cd /lib/systemd/system1
目錄下,和前述一樣,拷貝配置文件,不過這裏不是:1,而是:2,數字可以自己設置,一般遞增。
#cp [email protected] vncserver@:2.service1
然後修改vncserver@:2.service
#vi vncserver@:2.service1
修改配置
[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.service12
2、修改vnc登錄驗證密碼
執行完畢後,切換到admin賬戶,執行
$vncserver :21
會要求輸入驗證密碼
You will require a password to access your desktops.
Password:
Verify:
xauth: file /home/admin/.Xauthority does not existNew ‘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
3、啟動服務
之後切換回root,執行
#systemctl deamon-reload#systemctl start vncserver@:2.service12
這時候提示啟動不成功,執行命令
#vncserver :21
提示已經有一個vncserver as :2 running了,這時候我們先要殺掉這個進程,執行命令
#vncserver -kill :21
但一般沒有用,那麽我們
# ps -ef | grep vnc1
查看vncserver :2的進程id,如pid為1311,則執行
#kill -9 13111
然後再執行
#systemctl start vncserver@:2.service1
還是報錯,查看日誌,
#journalctl -xn1
提示需要刪除/tmp/.X2-lock
執行
#rm /tmp/.X2-lock1
再次啟動
#systemctl start vncserver@:2.service1
還是報錯,查看日誌,提示需要刪除/tmp/.X11-unix/X2
執行
#rm /tmp/.X11-unix/X21
再次啟動
#systemctl start vncserver@:2.service1
終於不報錯了,然後查看狀態
#systemctl status vncserver@:2.service1
發現已經啟動,則完成。之後註意不要忘了如前述配置防火墻。
到此為止就結束了所有的配置,在實際啟動過程中可能會遇到各種各樣的問題,大家只要靜下心來查看日誌,一般都能解決。有錯誤的地方,還望指正。
本文出自 “愛生活的小白” 博客,請務必保留此出處http://sf1314.blog.51cto.com/13295031/1978749
Windows下使用VNC連接CentOS7遠程桌面