前前言:這是我計劃寫(xiě)(和翻譯)的有關(guān)linux下遠程連接(遠程桌面)的詳細配置教程的第一部分,內容涉及基本的vncserver安裝和防火墻的設置. 如果有反響的話(huà),計劃再寫(xiě): part 2: ssh tunnel 支持下的windows vnc 連接
part 3: xremote (xdmcp) + ssh tunnel + exceed( cygwin) 連接等教程
VNCserver在Fedora上配置過(guò)程
前言:一直想寫(xiě)一下vncserver在redhat下詳細配置過(guò)程,以幫助一些向我有同樣需求卻有懶得去讀man page的朋友,后來(lái)在www.fedoranews.org上發(fā)現已經(jīng)有人寫(xiě)了一個(gè)教程,并且還不錯。干脆翻譯算了。大家可以直接去閱原文,我這里只是粗略地解釋一下,以方便那些不愿意讀字母的朋友.
翻譯:yunqing
原作者:Thomas Chung
出處:http://fedoranews.org/tchung/vnc/
聲明: 版權屬原作者Thomas Chung所有,轉載請注明出處.
再說(shuō)一句廢話(huà):強烈推薦這個(gè)網(wǎng)站,雖然更新比較慢,對Fedora發(fā)行版來(lái)說(shuō)比較對口.
以下正文:
什么是VNC?
VNC是虛擬網(wǎng)絡(luò )計算Virtual Network Computing的縮寫(xiě). 他是一個(gè)遠程控制程序,允許用戶(hù)在因特網(wǎng)的任何地方使用簡(jiǎn)單的程序來(lái)和一個(gè)特定的
計算機(服務(wù)器)進(jìn)行交互. 兩個(gè)交互的計算機不一定非得是同一類(lèi)型,所以你可以在家里的運行windows的PC上來(lái)察看辦公室里運行LINUX的機器
。VNC可以自由獲取并且有上百萬(wàn)的人在使用,他們來(lái)自工業(yè)、學(xué)術(shù)和個(gè)人應用等不同層面.
更多的信息請訪(fǎng)問(wèn) http://www.realvnc.com/
我的系統中已經(jīng)有這個(gè)軟件了嗎?
鍵入下面的命令來(lái)檢查vnc客戶(hù)端和服務(wù)器是否已經(jīng)安裝在你的系統中:
[tchung@tchung101 tchung]$ rpm -q vnc vnc-server
vnc-4.0-0.beta4.3.2
vnc-server-4.0-0.beta4.3.2
[tchung@tchung101 tchung]$
要把vnc配置成一項系統服務(wù),把你的用戶(hù)名稱(chēng)加入到下面的配置文件中:
[tchung@tchung101 tchung]$ sudo vi /etc/sysconfig/vncservers
# The VNCSERVERS variable is a list of display:user pairs.
#
# Uncomment the line below to start a VNC server on display :1
# as my ‘myusername‘ (adjust this to your own). You will also
# need to set a VNC password; run ‘man vncpasswd‘ to see how
# to do that.
#
# DO NOT RUN THIS SERVICE if your local area network is
# untrusted! For a secure way of using VNC, see
# URL:http://www.uk.research.att.com/vnc/sshvnc.html
# VNCSERVERS="1:myusername"
VNCSERVERS="1:tchung"
在啟動(dòng)vnc服務(wù)之前,讓我們用vncpasswd這個(gè)命令來(lái)創(chuàng )建一個(gè)vnc的口令
注意這將同時(shí)在你的home目錄下,創(chuàng )建一個(gè)隱藏的目錄.vnc,其中有一個(gè)文件passwd保存著(zhù)你的vnc口令.
[tchung@tchung101 tchung]$ vncpasswd
Password:
Verify:
[tchung@tchung101 tchung]$ ls -d .vnc
.vnc
[tchung@tchung101 tchung]$ ls .vnc
passwd
[tchung@tchung101 tchung]$
現在來(lái)啟動(dòng)vnc服務(wù).
[tchung@tchung101 tchung]$ sudo /sbin/service vncserver start
Starting VNC server: 1:tchung [ OK ]
[tchung@tchung101 tchung]$
察看一下.vnc這個(gè)目錄的內容,應該類(lèi)似于下面的東西.
[tchung@tchung101 tchung]$ cd .vnc
[tchung@tchung101 .vnc]$ ls
passwd tchung101:1.log tchung101:1.pid xstartup
[tchung@tchung101 .vnc]$
編輯這個(gè)名為xstartup的腳本,注意到下面紅色的部分的注釋
將這兩行標記成紅色的內容前面的注釋符號去掉,否則你將只能得到一個(gè)什么都沒(méi)有的灰屏。#!/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 &
因為我們已經(jīng)修改了啟動(dòng)腳本,現在來(lái)重新啟動(dòng)vncserver.
[tchung@tchung101 tchung]$ sudo /sbin/service vncserver restart
Shutting down VNC server: 1:tchung [ OK ]
Starting VNC server: 1:tchung [ OK ]
[tchung@tchung101 tchung]$
那么怎樣來(lái)連接到vncserver? 照下面使用客戶(hù)端的vncviewer命令.
[tchung@tchung101 tchung]$ vncviewer localhost:1
輸入你的vnc口令,看一下結果
更新:
在使用防火墻的情況下來(lái)連接到一個(gè)遠程系統,需要打開(kāi)端口5901.
加入以下紅色的部分,然后重啟iptables服務(wù)。
[tchung@tchung101 tchung]$ sudo vi /etc/sysconfig/iptables
# Firewall configuration written by redhat-config-securitylevel
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0]
:FORWARD ACCEPT [0]
:OUTPUT ACCEPT [0]
:RH-Firewall-1-INPUT - [0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 5901 -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT
[tchung@tchung101 tchung]$ sudo /sbin/service iptables restart
Flushing firewall rules: [ OK ]
Setting chains to policy ACCEPT: filter [ OK ]
Unloading iptables modules: [ OK ]
Applying iptables firewall rules: [ OK ]
[tchung@tchung101 tchung]$
Forrest Taylor 提供的TIP
讓vncserver接受兩個(gè)不同的用戶(hù):
VNCSERVERS="1:tchung 2:thomasc"
當然你要為兩個(gè)用戶(hù)分別運行vncpasswd來(lái)設置口令. 并且在你的防火墻修改中,你應該明白VNC使用端口5901給連接1用,如果象上面一樣要支
持兩個(gè)用戶(hù),應同時(shí)打開(kāi)5901和5902.
遠程桌面設置part2:利用putty進(jìn)行vnc + ssh tunneling
作者:yunqing at chinaunix.net
轉貼請注明出處
在前面有vnc server 設置的文章(http://bbs.chinaunix.net/forum/viewtopic.php?t=368552&highlight=yunqing)里, 我們已經(jīng)可以在一個(gè)linux的服務(wù)器上運行vncserver來(lái)進(jìn)行遠程訪(fǎng)問(wèn)了,但需要注意的是,如果直接使用vncviewer來(lái)進(jìn)行訪(fǎng)問(wèn),有兩點(diǎn)不利因素:
1. 口令傳輸是明文,很容易被偵聽(tīng)到.
2. 防火墻需要打開(kāi)59xx端口,這在通常的單位里是不可能的.
幸運的是,我們有ssh這個(gè)強大的工具,象X11 Forwarding(另文論述),我們可以使用ssh隧道來(lái)保護通訊過(guò)程,下面就進(jìn)行簡(jiǎn)單介紹.
假設vncserver運行在服務(wù)器 myserver (ip地址為:192.168.x.x)的屏幕1,也就是偵聽(tīng) 192.168.x.x:5901, 用戶(hù)名為foo
情形一: vnc客戶(hù)端為linux
這種情形很簡(jiǎn)單,一般的linux發(fā)行版本里面都默認安裝了ssh套件.
1. 用ssh登錄到服務(wù)器
ssh -L 5901:localhost:5901 -l foo myserver
或者直接用ip地址
ssh -L 5901:localhost:5901 -l foo 192.168.x.x
2. 在本機的另外開(kāi)的終端上,運行vncviewer (或其它的類(lèi)似工具)
vncviewer localhost:1
情形二: vnc客戶(hù)端為windows 1. 下載一個(gè)ssh客戶(hù)端,個(gè)人推薦putty,只有一個(gè)程序,不需要安裝,簡(jiǎn)單而功能齊全. 到這里下載http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
下載putty.exe到桌面上直接運行即可。
2. 運行putty,輸入服務(wù)器的ip地址,輸入一個(gè)名字,這里myserver作為session的名字,按save保存。見(jiàn)附圖一
3. 單擊對話(huà)框左邊的tunnels來(lái)選擇相關(guān)設置,在source port里輸入5901,在Destination里輸入localhost:5901,按Add添加,如附圖二
4. 單擊左邊session,回到session設置,按save重新保存。按open即可登錄到服務(wù)器。
5. 運行vnc-viewer (如果沒(méi)有,到這里下載http://www.realvnc.com/download.html,只要一個(gè)exe的文件就行),在Server里輸入localhost:1,見(jiàn)附圖三, 輸入口令后一個(gè)linux的桌面就會(huì )出現在windows里,并且是非常安全的,Cool?
另請參閱:
遠程桌面設置part1:VNCserver在Fedora上配置過(guò)程(轉譯)(http://bbs.chinaunix.net/forum/viewtopic.php?t=368552&highlight=yunqing)