1. 程式人生 > >VNC遠端桌面

VNC遠端桌面

1 介紹

給Ubuntu Sever 16.04版本:

  1. 安裝桌面環境
  2. 遠端使用桌面環境

簡而言之就兩個方面

2 安裝桌面環境

linux的桌面環境有很多:

  • Gnome
  • Kde
  • Unity
  • 等等

Ubuntu 16.04預設的桌面環境是Unity,所以就安裝Unity:

$ sudo apt-get update
$ sudo apt-get install ubuntu-desktop gnome-panel gnome-settings-daemon metacity nautilus gnome-terminal

上述命令安裝了其他類似LibreOffice等軟體

然後reboot,進入雲平臺自帶的遠端連線就能夠顯示桌面了(注意此時仍然是guest會話,還不能以root使用者登入): image

3 遠端使用桌面環境

3.1 VNC介紹

這裡使用VNC。

VNC(Virtual Network Computing)是使用RFB(Remote Frame Buffer protocol)協議的圖形桌面共享系統,可以達到遠端控制桌面的效果。VNC是server-client架構:

server,稱VNC server,常見的有:

  • x11vnc
  • vnc4server
  • tightvncserver

client,稱VNC viewer,常見的有:

  • Remmina(Linux)
  • RealVNC(Windows MacOS)

這裡我們選擇x11vncRemmina,選擇x11vnc的原因是:

  • x11vnc allows one to view remotely and interact with real X displays, unlike other Linux alternatives such as VNC4Server, 11vnc does not create an extra display (or X desktop) for remote control(不像VNC4Server會新建一個桌面,x11vnc是顯示上面tty顯示的桌面)
  • It has built-in SSL/TLS encryption and 2048 bit RSA authentication(wireshark抓包沒有看到明文傳輸密碼等資訊)

使用x11vncvnc4server的對比圖如下:

  • 使用x11vnc(移動滑鼠可以看出是同步的): image

  • 使用vnc4server(顯示了不同的桌面,vnc4server登入不需要實際的root密碼): image

3.2 安裝執行x11vnc

3.2.1 安裝

$ sudo apt-get install x11vnc

3.2.2 設定密碼

$ x11vnc -storepasswd
Enter VNC password: *********
Verify password: *********  
Write password to /root/.vnc/passwd?  [y]/n y
Password written to: /root/.vnc/passwd

3.2.3 執行

$ sudo x11vnc -auth guess -forever -loop -noxdamage -repeat -rfbauth /root/.vnc/passwd -rfbport 5900 -shared

xxx輸出
The VNC desktop is:      iZwz9d9lrgata42idu99hsZ:0
PORT=5900
xxx

3.2.4 連線

使用viewerRemmina連線: image

  • Server: IP:0(埠5900就填0,5901就填1)
  • Password:剛剛設定的密碼

3.2.5 開機自起

vi /etc/rc.local填入如下內容(exit 0 之前):

/usr/bin/x11vnc -xkb -auth /var/run/lightdm/root/:0 -noxrecord -noxfixes -noxdamage -rfbauth /root/.vnc/passwd -forever -bg -rfbport 5900 -o /var/log/x11vnc.log  > /dev/null 2>&1

3.2.6 啟用Login Screen

連線後發現登入介面只能使用訪客會話,不能以root身份登入。vi /etc/lightdm/lightdm.conf(不存在就建立)填入如下內容來Enable Login Screen

[SeatDefaults]
greeter-session=unity-greeter
user-session=ubuntu
greeter-show-manual-login=true

reboot,然後就能以root身份登入了: image

4 參考連結