如何遠程辦公或者遠程彈性化工作制在技術領域正變得越來越流行。這個趨勢背後的一個技術就是遠程桌面。你的桌面環境在雲中,你可以在任何你去的地方,或者在家或者工作場所訪問你的遠程桌面。
這個教程介紹如何VPS中設置基於CentOS的遠程桌面。現在,我們會先展示CentOS的基礎環境。
我們假設你已經創建了CentOS 7的VPS實例(比如,使用DigitalOcean 或者 Amazon EC2)。請確保你的VPS實例有至少1GB的內存。不然,CentOS將會在你訪問遠程桌面的時候會崩潰。
第一步: 安裝CentOS桌面
如果你現在安裝的CentOS版本是沒有桌面的最小版本,你需要先在VPS上安裝桌面(比如GNOME)。比如,DigitalOcean的鏡像就是最小版本,它需要如下安裝桌面GUI
復制代碼代碼如下:# yum groupinstall "GNOME Desktop"
在安裝完成之後重啟VPS。
第二步:安裝和配置VNC服務器
接下來就是安裝和配置VNC服務器。我們使用的是TigerVNC,一個開源的VNC服務實現。
復制代碼代碼如下:# yum install tigervnc-server
現在創建一個用戶賬戶(比如:xmodulo)用來訪問遠程桌面。
復制代碼代碼如下:# useradd xmodulo
# passwd xmodulo
當一個用戶嘗試使用VNC訪問遠程桌面時,VNC守護進程就會啟動來處理這個請求。這意味著你需要為每個用戶創建一個獨立的VNC配置文件。
CentOS依靠systemd來管理和配置系統服務。所以我們將使用systemd來為用戶xmodulo配置VNC服務器。
首先讓我們使用下面任意一條命令來檢查VNC服務器的狀態。
復制代碼代碼如下: # systemctl status vncserver@:.service
# systemctl is-enabled [email protected]
默認的,剛安裝的VNC服務並沒有激活(禁用)。
現在復制一份通用的VNC服務文件來為用戶xmodulo創建一個VNC服務配置。
復制代碼代碼如下: # cp <a>/lib/systemd/system/[email protected]</a> <a>/etc/systemd/system/vncserver@:1.service</a>
用本文編輯器來打開配置文件,用實際的用戶名(比如:xmodulo)來替換[Service]下面的。同樣。在ExecStart後面追加 "-geometry " 參數。最後,要修改下面“ExecStart”和“PIDFile”兩行。
復制代碼代碼如下:# vi <a>/etc/systemd/system/vncserver@:1.service</a> </p>
<p> [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 xmodulo -c "/usr/bin/vncserver %i -geometry 1024x768"
PIDFile=/home/xmodulo/.vnc/%H%i.pid
ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
現在為用戶xmodulo設置密碼(可選)。首先切換到該用戶,並運行vncserver命令。
復制代碼代碼如下:# su - xmodulo
# vncserver
你會被提示輸入用戶的VNC密碼。密碼設置完成後,你下次需要用這個密碼來訪問你的遠程桌面。
最後,重新加載服務來使新的VNC配置生效:
復制代碼代碼如下:# systemctl daemon-reload
在啟動時自動啟動VNC服務:
復制代碼代碼如下:# systemctl enable vncserver@:1.service
檢查vnc服務正在監聽的端口:
# netstat -tulpn | grep vnc
端口5901是VNC默認的客戶端連接到VNC服務器使用的端口。
第三步:通過SSH連接到遠程桌面
從設計上說,VNC使用的遠程幀緩存(RFB)並不是一種安全的協議,那麼在VNC客戶端上直接連接到VNC服務器上並不是一個好主意。任何敏感信息比如密碼都可以在VNC流量中被輕易地洩露。因此,我強烈建議使用SSH隧道來加密你的VNC流量。
在你要運行VNC客戶端的本機上,使用下面的命令來創建一個連接到遠程VPS的SSH通道。當被要輸入SSH密碼時,輸入用戶的密碼。
復制代碼代碼如下: $ ssh xmodulo@<VPS-IP-address> -L 5901:127.0.0.1:5901
用你自己的VNC用戶名來替換“xmodulo”,並填上你自己的VPS IP地址。
一旦SSH通道建立之後,遠程VNC流量就會通過ssh通道路由並發送到127.0.0.1:5901。
現在啟動你最愛的VNC客戶端(比如:vinagre),來連接到127.0.0.1:5901。
你將被要求輸入VNC密碼。當你輸入VNC密碼時,你就可以安全地連接到CentOS的遠程桌面了。
然後就會看到如題圖的顯示。