VNC server配置


vnc簡介

VNC 由AT&T 的劍橋研究實驗室開發,可實現遠程圖像顯示和控制。

VNC可是指一種通信協議——Virtual Network Computing,也代指實現這種協議的工具——Virtual Network Console( 虛擬網絡控制台)。

VNC工具分為服務端和客戶端,服務端提供兩種服務方式:

  • 物理會話:直接控制物理顯示器顯示的內容,所有連接上的用戶看到的是同一圖像。
  • 虛擬會話:同時運行多個虛擬會話,各個會話圖像不同。

常見VNC實現

VNC作為一種通用協議,現有多種實現工具:

  • TigerVNC

    TightVNC的分支,取代原TightVNC,虛擬會話使用Xvnc,物理會話使用x0vncserver

    如今Linux發行版中最常用的VNC實現(一些發行版中安裝vncserver包即是安裝tigervnc)。tigervnc包含一個vnc客戶端vncviewer。

  • TurboVNC

    TightVNC的分支,特點是對圖形傳輸方面的優化。

  • RealVNC

    2002年劍橋研究室實驗室關閉,后來VNC的創始人創立的RealVNC公司開發的產品,客戶端可以通過該產品的服務器連接服務端,提供商用版本,以及有一定限制的免費版本。

  • vinovinagre

    GNOME項目的子項目,vino為服務端,vinagre為客戶端(還支持SPICE、RDP、SSH等協議)

  • x11vnc

    僅為實現X11的服務端。

VNC服務端配置

以下以tightvnc系的tigervnc為主,tightvnc命令與之類似。

虛擬會話

  • 啟動會話

    最簡單方法是執行vncserver,它是Xvnc的包裝腳本(Xvnc命令使用通x0vncserver)。

    用戶首次執行該命令,會提示創建適用於該用戶vnc會話的密碼。

    vnc服務會會一次為開啟的虛擬會話編號,每個會話使用一個端口,編號默認從:1開始,對應端口為5901,以此類推。

    vncserver  #如果沒有會話,一般從:1開始 端口5901
    vncserver :2  #指定會話為:2 端口5902
  • 管理vnc會話

    • vncserver -list參數查看會話列表
    • vncserver -kill <會話編號>參數終止某個會話

      vncserver -kill :1  #終止1號會話
    • vncpassword修改密碼

直接控制

TigerVNC使用x0vncserver,RealVNC有自己的實現,還可以使用x11vnc

x0vncserver實現更為低效,較之更推薦x11vnc

直接控制的VNC使用端口5900。

x0vncserver

#-display指定使用的物理顯示 並指定密碼文件(可由vncpasswd生成) x0vncserver -rfbauth ~/.vnc/passwd -display :0 x0vncserver -display :0 -passwordfile ~/.vnc/passwd #作用同上

x11vnc

啟動服務:

x11vnc -display :0  #沒有安全保證 將建立一個沒有密碼的VNC!!!
#設置一個密碼 但是在服務端執行ps查看進程可看到密碼 x11vnc -wait 50 -noxdamage -passwd PASSWORD -display :0 -forever -o /var/log/x11vnc.log -bg x11vnc -gui #可以啟動一個tk編寫的圖形界面前端

直接運行將建立一個沒有密碼的VNC,-passwd雖然能設置密碼,但仍能通過ps命令查詢進程獲取密碼信息。

  • 加密

    • ssh轉發加密

      1. 使用-localhost參數啟動服務,綁定vnc服務到localhost從而拒絕外部連接:

        x11vnc -localhost
      2. 客戶端使用ssh轉發,將服務端的5900端口到客戶端的5900端口,在客戶端執行:

        ssh <x11vnc-server-host> 5900:localhsot:5900

        而后客戶端連接自己的5900端口即可。

    • auth加密

      x11vnc -display :0 -auth ~/.Xauthority  #root用戶
      
      #GDM 以下將打開gdm登錄界面(120是gdm的uid) x11vnc -display :0 -auth /var/lib/gdm/:0.Xauth #新版本gdm可使用: x11vnc -display :0 -auth /run/user/120/gdm/Xauthority  #lightdm x11vnc -display :0 -auth /var/run/lightdm/root/\:0  #sddm 11vnc -display :0 -auth $(find /var/run/sddm/ -type f)
  • 設置密碼

    x11vnc -usepw  #生成密碼文件~/.vnc/passwd
  • 持續運行

    默認情況下,x11vnc將接受第一個VNC會話,並在會話斷開時關閉。為了避免這種情況,可以使用-many或-forever參數啟動x11vnc:

    x11vnc -many -display :0
    #或 x11vnc --loop #這將在會話完成后重新啟動服務器 

vncconfig

控制vnc的工具,在服務端執行vncconfig可以打開一個圖形窗口,可在其中勾選激活客戶端和服務端之間剪切版同步等功能。

vncserver配置示例

vncserver命令中可以設置顯示和操作相關參數,參數可以在vnc配置文件中配置,主要涉及~/.vnc下的config文件和xstartup文件(如果沒有單獨配置這兩個文件,將使用默認的配置)。

config文件中的配置可在vncserver命令參數中指定,xstartup中的配置只能寫在一個文件中,可使用vncserver-xstartup參數指定文件。

~/.vnc/config文件配置根據名稱即可獲知其用途,示例如下:

# desktop=sandbox geometry=1920x1080 #分辨率 # localhost # alwaysshared dpi=96

~/.vnc/xstartup文件供啟動虛擬會話時使用,是一個shell文件,配置啟動會話時的相關環境,最重要的是配置啟動會話的桌面環境或窗口管理器,示例如下:

#!/bin/sh unset SESSION_MANAGER unset DBUS_SESSION_BUS_ADDRESS export XKL_XMODMAP_DISABLE=1  #指定要使用什么桌面環境或窗口管理器 #session=startxfce #xfce #session=startlxde #lxde session=gnome-session #GNOME #session=mate-session #MATE #session=startdde #DDE(Deepin桌面) #session=startkde #KDE Plasma #session=i3 #i3wm  # Copying clipboard content from the remote machine (need install autocutsel) #autocutsel -fork  #exec $session exec dbus-launch $session

VNC客戶端使用

連接虛擬會話,使用服務端的地址+端口即可,例如:192.168.0.1:5901(或者使用會話編號如192.168.0.1::1

連接物理會話,使用5900端口,一些客戶端不填寫端口時默認使用5900。

相關問題

  • 黑屏

    • VNC協議基於X,不支持wayland。
    • 沒有在xstartup中執行
  • dbus沖突

    Could not make bus activated clients aware of XDG_CURRENT_DESKTOP=GNOME environment variable: Could not connect: Connection refused

例如安裝了anaconda,它的bin目錄中的dbus-daemon會與系統自帶的dbus-daemon沖突。

解決方法:

  • 不使用ananconda
  • 不要自動激活ananconda或者將其加入登錄后自動加載的環境變量,使用時手動加載。
  • 提升系統原有dbus-daemon優先級

    復制/usr/bin/dbus-daemon到其他目錄,在ananconda的export后面添加這個目錄的PATH。例如:

      cp $(which dbus-daemon) /usr/local/bin
      #anaconda.sh是寫有ananconda環境變量配置的文件 echo "export PATH=/usr/local/bin:$PATH" >> /path/to/anaconda.sh

轉自:https://segmentfault.com/a/1190000022707961


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM