:::

用Windows的遠端桌面操作Linux——xrdp與VNC Server搭配

image

在之前我介紹過用VNC Server做到遠端連線的功能,但老實說,這VNC遠端桌面實在是不太好用,不僅操作上總是會有延遲的感覺,更讓人頭痛的是,VNC Server免費版本是沒有加密功能,很容易遭人竊取!

在網路上找來找去,總算找到一個解決方案:xrdp,開放原始碼的遠端桌面通訊協定(remote desktop protocol)伺服器。

image

使用xrdp,你就可以用Windows上的「遠端桌面連線」來看到Linux上的桌面喔!

網路上很多人都是用Ubuntu的apt-get來安裝xrdp,但這對RedHat家族的CentOS來說可就沒有apt-get這個方便的工具了。因此這一篇則是記錄著在CentOS 4.3上安裝設定xrdp與vnc server的方法,可惜最後我無法開機自動啟動VNC Server,這部份就得手動用SSH來開啟了。


1. 安裝xrdp

CentOS要安裝xrdp可以用簡單的rpm來安裝。請到DAG: xrdp RPM packages for Red Hat, CentOS and Fedora裡面下載xrdp-0.4.0-1.rh9.rf.i386.rpm(注意到自己OS的版本)。

執行rpm安裝指令:

# rpm -ivh xrdp-0.4.0-1.rh9.rf.i386.rpm

這個rpm檔案安裝完畢之後,大部分設定檔是擺在「/etc/xrdp/」之中,在本文裡面我們並沒有特別要去變動的設定,在這邊就只稍微提一下而已。

2. 啟動xrdp,並設定開機自動啟動

xrdp啟動指令如下:

# /etc/rc.d/init.d/xrdp_control.sh start

最後的「start」改用「stop」跟「restart」則會是停止、重新啟動的指令。

到這裡為止,你已經可以用遠端桌面來連到該伺服器了,但還不能順利執行遠端桌面喔。

為了讓伺服器在開機時就自動啟用xrdp,我們得要設定/etc/rc.local。編輯/etc/rc.local:

# vim /etc/rc.local

在最後加入以下指令

/etc/rc.d/init.d/xrdp_control.sh start

這樣開機就會自動啟動xrdp了。

p.s. 我後來在CentOS 5 Final上面安裝rpm檔案,卻會套件相依性的錯誤。用yum install那些套件之後,在安裝rpm,卻也會有錯誤訊息,而且到最後找不到xrdp_control.sh的位置。總之就是安裝失敗,真是讓人遺憾。

3. 用VNC Server來登入遠端桌面

xrdp只是一個通訊協定,真正進行遠端桌面的還得依賴其他軟體,在此我們使用的是VNC Server。

VNC Server的啟動與設定方法我在之前VNCserver初始設定與自動啟動裡面有敘述過,這邊再簡單把作法帶過:

  1. 以root修改vncservers啟動設定: # vim /etc/sysconfig/vncservers如果你要以dspace帳號登入,登入桌面為1024x768,那麼加入以下設定:
    VNCSERVERS="1:dspace"
    VNCSERVERARGS[1]="-geometry 800x600"
  2. 以root啟動vncserver # /etc/init.d/vncserver start
  3. 切換到dspace帳號 # su dspace 執行vncpasswd來設定密碼 #vncpasswd
    Password: //輸入 VNC 密碼
    Verify: //再輸入一次 VNC 密碼以確認
    修改~/.vnc/xstartup (如果沒有這個檔案,那代表之前2個步驟沒有完成) # vim ~/.vnc/xstartup該檔案的內容如下,請將SESSION_MANAGER與exec /etc/X11/xinit/xinitrc開頭的#註解拿掉,其他行則加上註解。參考如下: #!/bin/sh
    # Uncomment the following two lines for normal desktop:
    unset SESSION_MANAGER
    exec /etc/X11/xinit/xinitrc

    #[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
    #[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
    #xsetroot -solid grey
    #vncconfig -iconic &
    #xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
    #twm &
  4. 回到root # exit 重新啟動VNC Server # /etc/init.d/vncserver restart修改/etc/rc.local,把啟動的命令加進去# vim /etc/rc.local在最後加入以下指令/etc/init.d/vncserver start

這樣就大功告成了。而VNC Server預設是會被防火牆擋住,所以只能靠xrdp進到本機端來連線。

根據之前在CentOS 5 Final安裝VNC Server的經驗,照理說在/etc/rc.local增加「service vncserver start」的指令應該就能夠開機自動啟動VNC Server,但嘗試多種設定方法之後依然失敗。VNC Server有在執行中,但並沒辦法開啟遠端桌面。

因此最後我的解決方案是,在需要用遠端桌面的時候,先以SSH登入Linux「service vncserver start」,再用遠端桌面登入Linux。

4. 用Windows的遠端桌面連到Linux

image

「遠端桌面連線」通常在「開始→所有程式(程式集)→附屬應用程式→通訊→遠端桌面連線」可以找到。

image

請在「電腦」的地方輸入該伺服器的IP或Domain Name,按下「連線」。

image

使用者名稱跟密碼隨便輸入,按下「確定」。

image

Module選擇「console」(本機操作),密碼則輸入在設定vncpasswd時的密碼。按下ok。

image

如果沒有出現錯誤訊息的話,那就可以順利進入到Linux的桌面囉!

如果出現error - connect problem,那得要用SSH登入Linux將vncserver restart囉。


這一篇從昨天晚上寫到今天下午,而且還不算是很完美的解決方案,有點讓人灰心啊。

總共18 則留言 ( 我要發問 , 隱藏留言 顯示留言 )

  1. 厲害
    我上次搞超久的都弄不好,我是裝在ubuntu上,看來我應該是vnc那邊沒設好,不過我已經把ubuntu移除了T_T

    回覆刪除
  2. 事後我看看,好像還是沒有完全搞定
    有些電腦連線會出現問題,有些不會
    很怪

    回覆刪除
  3. 似乎是跟Windows遠端桌面的版本有關
    在安裝Windows SP3以前使用的版本可以連線,像是5.2版本就可以
    可是升級之後改用遠端桌面6.0版本,就不能連了。

    回覆刪除
  4. cent5上裝了xrdp-0.4.0-1.e15.rf
    利用rpm -ql xrdp
    可以看到
    /usr/share/doc/xrdp-0.4.0/xrdp_control.sh
    /usr/share/doc/xrdp-0.4.0/xrdp_control.sh
    另外,也有
    /usr/share/doc/xrdp-0.4.0/install.txt
    可參考.

    回覆刪除
  5. 作者已經移除這則留言。

    回覆刪除
  6. 但是xrdp只支援rdpv4,
    利用vista等新版的rdpv6連入
    會出現協定錯誤,無法成功訊息.

    回覆刪除
  7. 原來如此,難怪我使用Windows XP把遠端桌面升級過後也沒辦法連回XRDP的電腦。

    稍微找了一下XRDP的資訊,似乎並沒有提到RDPv6的解決方案。
    到頭來我還是回頭使用VNC了orz

    感謝您的告知!真的是很有用的資訊!

    回覆刪除
  8. towns使用Fedora 14安裝xrdp,並不需要啟動vnc server,就可以用逺端桌面登入了呢!

    回覆刪除
  9. XRDP 無法穿過防火牆連到外面的linux
    是比較可惜的地方

    回覆刪除
  10. To Benson:

    可以考慮使用TeamViewer的Linux版
    http://www.teamviewer.com/zhtw/download/index.aspx
    使用方式跟Windows很像,也很實用呢

    回覆刪除
  11. 其實內網來說
    VNC連Linux是很順的

    回覆刪除
  12. To Facemaskman:

    我記得當初就是用內部的區域網路在測試,但跟RDP比起來,還真的不太流暢。

    回覆刪除
  13. 現在其實不會了說~~
    當時有可能會是因為內部路由器設定的問題
    或是硬體有誤所以跑起來不順暢

    回覆刪除
  14. 或著可能是老電腦的關係吧,都快四年以前的事情了。

    回覆刪除
  15. 這篇好久了XD
    目前用起來的一些心得:
    (CentOS 6.7, xrdp 0.6.1 from EPEL)
    1. session不能重連
    因為預設安裝是VNC底, 每次連進去他就開一個新的VNC session. 這樣很難用...
    似乎可以做到連線時會問session號碼, 還需要測試.
    xrdp可以選用x11rdp底層, 不過在CentOS上還沒有裝起來過.
    2. 多重使用者OK
    我的用途是要給多人同時操作, 就我的理解, Linux上的Teamviewer是直接去抓console吧? 所以不能多人連線?

    回覆刪除
  16. To Mike Chen,

    沒想到這篇還有人在看
    現在大家都想要做DaaS,所以希望多人同時連一台電腦
    但是光是這樣子還是很難做到

    我認為可能要改用CaaS的方式即時建立容器來讓人連線,這樣比較有用吧

    回覆刪除
  17. Unix家族這塊做的都很爛啊,雖然不一定是壞事,但其實用NAS那套webUI方案其實更好一點,要不就只能用很沒效率的SSH

    回覆刪除