大家都有用過WIndows的遠端桌面連線吧

其名稱叫做Remote Desktop Protocol (RDP)

是一個網路協定,微軟WinXP之後的都有他的Client可以說是非常方便

而Linux呢?沒有原生的RDP的Server

但有VNC,而且有個xrdp的軟體能夠『透過rdp協定』來連線vnc

設定上有一點點小複雜,不過應該還好

--------------------------------------------------

安裝vnc server

我之前也有寫過VNC的架設,大家可以參考一下

http://j796160836.pixnet.net/blog/post/20787531

這裡的設定跟之前寫的差不多,避免變成二篇文章後

大家設定不起來,還是簡單節錄一下

 

這裡我們用的是tightvnc server

直接下yum指令安裝

[root@localhost ~]# yum install vnc-server -y

 

安裝完畢後就可啟動服務

[root@localhost ~]# /etc/init.d/vncserver start

然後開一個user來做VNC連線登入的帳號,本例是vncDesktop

(也可以跟本機帳號一樣,如果是這樣就省略開帳號的動作)

[root@localhost ~]# useradd vncDesktop

設定密碼

[root@localhost ~]# passwd vncDesktop

如果是root登入,需要切換到該使用者,來設定vnc使用的密碼

[root@localhost ~]# su vncDesktop

設定vnc使用的密碼(這裡的密碼到時候就會是遠端桌面使用的密碼)

[vncDesktop@localhost ~]# vncpasswd

再切換回root

[vncDesktop@localhost ~]# su -

 

這裡需要設定哪個使用者需啟用vnc服務

[root@localhost ~]# vi /etc/sysconfig/vncservers

解除註解並修改

VNCSERVERS="2:vncDesktop"
VNCSERVERARGS[2]="-geometry 800x600 -nolisten tcp -localhost"

 

 

2冒號  不可省略,指的是Terminal的號碼
VNCSERVERARGS註解要拿掉

 

 

然後重啟vnc服務,套用新設定

[root@localhost ~]# /etc/init.d/vncserver restart

這時候,如果沒有提示錯誤的話

應該會跑vnc在5902的port

這個port防火牆可以不開,也不需要開,因為我們要用xrdp去連vnc

 

--------------------------------------------------

 

安裝xrdp

 

這裡還是要再三描述觀念

xrdp是基於vnc服務的服務,所以vnc的架設和設定不能省略

架設方法在上文

 

xrdp安裝一樣直接下yum指令安裝

[root@localhost ~]# yum install xrdp -y

 

安裝完畢後就可啟動服務

[root@localhost ~]# /etc/init.d/xrdp start

 

防火牆對應做修改,打開3389的port

[root@localhost ~]# vi /etc/sysconfig/iptables

加一行文字,打開3389的port

-A INPUT -m state --state NEW -m tcp -p tcp --dport 3389  -j ACCEPT

 

然後記得重啟防火牆,讓他套用新設定

[root@localhost ~]# /etc/init.d/iptables restart

 

 

--------------------------------------------------

我們需要修改startwm.sh修改啟動X Window的的順序

因為Fedora來說預設只有裝gnome

所以我們需要把它改到優先(橘色為修改)

[root@localhost ~]# vi /etc/xrdp/startwm.sh

#!/bin/sh -l

# change the order in line below to run to run whatever window manager you
# want, default to kde

SESSIONS="gnome-session startkde startxfce4 xterm"

# change PATH to be what your environment needs usually what is in
# /etc/environment
#PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"
#export PATH=$PATH

# for PATH and LANG from /etc/environment
# pam will auto process the environment file if /etc/pam.d/xrdp-sesman
# includes
# auth       required     pam_env.so readenv=1
#. /etc/environment
#export PATH=$PATH
#export LANG=$LANG

# for bash profile
#. ~/.bash_profile
#. /etc/profile

for WindowManager in $SESSIONS
do
  which $WindowManager
  if test $? -eq 0
  then
    echo "Starting $WindowManager"
    $WindowManager
    exit 0
  fi
done

exit 1


--------------------------------------------------

接下來,在實際測試的時候會出現一個很奇怪的現象

就是xrdp之後,滑鼠正常,但鍵盤就是無法使用

無法打入帳號密碼

後來發現是因為是鍵盤配置檔出問題

因為

在繁體中文的環境下,xrdp會抓不到對應的鍵盤配置檔

 

所以我們必須修正這個問題

以我的為例,xrdp的設定檔有這些

[root@localhost ~]# ls /etc/xrdp/

km-0004.ini  km-0409.ini  km-0419.ini  sesman.ini   xrdp.sh      
km-0404.ini  km-040c.ini  km-041d.ini  startwm.sh   
km-0407.ini  km-0410.ini  rsakeys.ini  xrdp.ini     

請注意這些km-xxxx.ini這些就是鍵盤配置檔

km-0409.ini 這個是英文的鍵盤配置

以下列出一些常看到的語系代碼,如果沒有的話請到以下網址去參考

http://xrdp.sourceforge.net/documents/keymap/rfc1766.html

 

"0004"="zh;Chinese"
"0404"="zh-tw;Chinese (Taiwan)"
"0804"="zh-cn;Chinese (China)"
"0C04"="zh-hk;Chinese (Hong Kong SAR)"
"1004"="zh-sg;Chinese (Singapore)"

"0409"="en-us;English (United States)"
"0809"="en-gb;English (United Kingdom)"
"0C09"="en-au;English (Australia)"
"1009"="en-ca;English (Canada)"
"1409"="en-nz;English (New Zealand)"
"1809"="en-ie;English (Ireland)"
"1C09"="en-za;English (South Africa)"
"2009"="en-jm;English (Jamaica)"
"2809"="en-bz;English (Belize)"
"2C09"="en-tt;English (Trinidad)"

 

以繁體中文0404為例,因為我們的鍵盤配置跟英文一樣

所以只要打上這個指令就行了

[root@localhost ~]# cp /etc/xrdp/km-0409.ini /etc/xrdp/km-0004.ini

[root@localhost ~]# cp /etc/xrdp/km-0409.ini /etc/xrdp/km-0404.ini

其他鍵盤方面沒講到的地方都在這:

http://xrdp.sourceforge.net/documents/keymap/newkeymap.html

 

--------------------------------------------------

最後,測試成功後,就可以將它設定為開機自動啟動

[root@localhost ~]# chkconfig xrdp on

[root@localhost ~]# chkconfig vncserver on

--------------------------------------------------

參考資料

http://hpclab.cs.pu.edu.tw/wiki/index.php/Xrdp#.E9.8D.B5.E7.9B.A4.E9.8C.AF.E4.BA.82

http://chip.twbbs.org/2009/06/xrdpubuntu-904.html

創作者介紹

清新下午茶

Johnny 鋼鍊 發表在 痞客邦 PIXNET 留言(0) 人氣()