2011年8月12日

有關 X11VNC

今天有一件工作,須要 remote 設定一部 Linux Server,但是遇到問題。
話說 server 中有一些程序正在 login 後的 gdm session 中跑,但我不可以殺掉它,而且這個 session 還是在本土登入並 lock screen。我雖可以 reset password,但我又不想跑到現場。所以要想法子。

對於 GUI 的 remote,RDP 或是 VNC 當然走不了,但問題是一般 VNC 不可以把使用中的 session 帶過來,若果能做到像 KVM一樣就太好了。

找了一下,發現有一個 Project 叫 x11vnc:
http://www.karlrunge.com/x11vnc
簡單的說就是把真正的 X display 送到 VNC Viewer 去操作。太好了!!!

安裝比較簡單:
  1. 下載原代碼 (http://sourceforge.net/projects/libvncserver/files/x11vnc/)
  2. 解壓後編譯

# ./configure
# make
# make install

使用也很簡單,若果現以有一個 login session,以 SSH 登入 (使用相同用戶或 su - ),再執行:
# x11vnc -display:0

用後使用 VNC Viewer (或透過 SSH-TUNNEL) 連上便可。

還有,若果想從 login session/screen 中進入,那須要做多一點功夫了:
- 首先以 root 身份登入 (或 sudo)
- 嘗試用
# x11vnc -auth guess

- 若不成功,可以自己找出目前的 XAUTHORITY,如:
# ps aux|grep -i auth|grep -i gdm

如使用 KDE, 請把 gdm 改成 kdm;或是 X Display 的 xdm

若果想再了解更多可以到它的FAQ參考。

後記:
我在 CentOS 下 Compile 很順利,並可以見到 lock screen 畫面,但當我用鍵盤輸入時就沒有返應,這時我再看清楚執行 x11vnc 後的提示,才發現我的 x11vnc 裡沒有支持到 XTEST。
原來我須要在編譯前安裝 libXtst-devel。那麼:
# yum install libXtst libXtst-devel libXext libXext-devel

之後再編譯  x11vnc 就 OKAY 了。

沒有留言:

發佈留言