大家都有用過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 800×600 -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