VNC遠端桌面
阿新 • • 發佈:2018-12-11
1 介紹
給Ubuntu Sever 16.04版本:
- 安裝桌面環境
- 遠端使用桌面環境
簡而言之就兩個方面
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使用者登入):
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)
這裡我們選擇x11vnc
和Remmina
,選擇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抓包沒有看到明文傳輸密碼等資訊)
使用x11vnc
和vnc4server
的對比圖如下:
-
使用
x11vnc
(移動滑鼠可以看出是同步的): -
使用
vnc4server
(顯示了不同的桌面,vnc4server登入不需要實際的root密碼):
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
連線:
- 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
身份登入了: