2016年11月4日 星期五

CentOS 7 安裝 VNC server


最近工作需要做一些遠端管理,除了ssh以外還需要能夠遠端桌面的環境,在CentOS上可以用VNC(Virtual Network Computing)方式登入,Centos 6和7的安裝方式不太一樣,所以來記錄一下。




VNC server講白話就是遠端桌面,如果機器當初是裝文字介面沒有圖形介面的話,先安裝桌面環境。
[root@localhost ~]# yum groupinstall "GNOME Desktop"


安裝VNC server。
[root@localhost ~]# yum install tigervnc-server


VNC組態檔為一個帳戶一個組態檔,例如我機器上想要開放root和user1兩個帳戶能夠被遠端登入,就需要兩個組態檔。
CentOS 7的VNC預設組態檔在:(以前是/etc/sysconfig/vncservers
/lib/systemd/system/vncserver@.service 


VNC server port使用59xx,如果要使用5909的話,那麼組態檔名稱這樣取:
/etc/systemd/system/vncserver@:9.service


所以複製一下組態檔:
[root@localhost ~]# cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:9.service


編輯組態檔:
[root@localhost ~]# vim /etc/systemd/system/vncserver@:9.service


[Service]部分修改PIDFile,像我要開放root帳戶,root的home目錄在/root,如果是user1的home目錄在/home/user1(#後面是註解,看清楚要開放哪個帳戶)。
還有ExecStart的<User>改成要開放的帳戶名稱。
[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 root -c "/usr/bin/vncserver %i"

# user1
# PIDFile=/home/user1/.vnc/%H%i.pid

# root
PIDFile=/root/.vnc/%H%i.pid

ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'


接著設定VNC連上後的密碼(要先用指令su切換到要開放的帳戶,假如我要開放user1要先su user1切換成user1):
[root@localhost ~]# vncpasswd
Password:
Verify:


然後開啟VNC service,以及 daemon化這個service。
[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# systemctl start vncserver@:9.service
[root@localhost ~]# systemctl enable vncserver@:9.service


最後開啟防火牆允許VNC的連線,以及重新load防火牆,這邊我多開放了port 5909。
[root@localhost ~]# firewall-cmd --permanent --add-service="vnc-server" --zone="public"
success
[root@localhost ~]# firewall-cmd --add-port=5909/tcp --permanent
success
[root@localhost ~]# firewall-cmd --reload
success


以下指令可以列出目前已經開放的遠端虛擬桌面。
[root@localhost ~]# vncserver -list

TigerVNC server sessions:

X DISPLAY # PROCESS ID
:9  25049


在Mac OS X上要遠端桌面的話,開啟Safari輸入網址「vnc://[ip]:[port]」。




然後開啟後,會要輸入密碼,那個密碼就是指令vncpasswd的時候設定的密碼(不是帳戶密碼)。





最後就完成啦。




其他人的教學都是使用port 5901,CentOS 7預設的防火牆是可以針對特定server設定,但是我是使用port 5909,防火牆還是會擋下來,所以我就再另外開放5909啦。


如果無法正常啟動daemon,像是:
[root@localhost ~]# systemctl start vncserver@:9.service
Job for vncserver@:9.service failed because the control process exited with error code. See "systemctl status vncserver@:9.service" and "journalctl -xe" for details.

指令:
[root@localhost ~]# rm -rf /tmp/.X11-unix/

沒有留言:

張貼留言