前前言:这是我计划写(和翻译)的有关linux下远程连接(远程桌面)的详细配置教程的第一部分,内容涉及基本的vncserver安装和防火墙的设置. 如果有反响的话,计划再写: part 2: ssh tunnel 支持下的windows vnc 连接
part 3: xremote (xdmcp) + ssh tunnel + exceed( cygwin) 连接等教程 VNCserver在Fedora上配置过程 前言:一直想写一下vncserver在redhat下详细配置过程,以帮助一些向我有同样需求却有懒得去读man page的朋友,后来在www.上发现已经有人写了一个教程,并且还不错。干脆翻译算了。大家可以直接去阅原文,我这里只是粗略地解释一下,以方便那些不愿意读字母的朋友. 翻译:yunqing 原作者:Thomas Chung 出处:http:///tchung/vnc/ 声明: 版权属原作者Thomas Chung所有,转载请注明出处. 再说一句废话:强烈推荐这个网站,虽然更新比较慢,对Fedora发行版来说比较对口. 以下正文: 什么是VNC? VNC是虚拟网络计算Virtual Network Computing的缩写. 他是一个远程控制程序,允许用户在因特网的任何地方使用简单的程序来和一个特定的 计算机(服务器)进行交互. 两个交互的计算机不一定非得是同一类型,所以你可以在家里的运行windows的PC上来察看办公室里运行LINUX的机器 。VNC可以自由获取并且有上百万的人在使用,他们来自工业、学术和个人应用等不同层面. 更多的信息请访问 http://www./ 我的系统中已经有这个软件了吗? 键入下面的命令来检查vnc客户端和服务器是否已经安装在你的系统中: [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配置成一项系统服务,把你的用户名称加入到下面的配置文件中: CODE:
[tchung@tchung101 tchung]$ sudo vi /etc/sysconfig/vncservers
在启动vnc服务之前,让我们用vncpasswd这个命令来创建一个vnc的口令# 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./vnc/sshvnc.html # VNCSERVERS="1:myusername" VNCSERVERS="1:tchung" 注意这将同时在你的home目录下,创建一个隐藏的目录.vnc,其中有一个文件passwd保存着你的vnc口令. CODE:
[tchung@tchung101 tchung]$ vncpasswd
现在来启动vnc服务.Password: Verify: [tchung@tchung101 tchung]$ ls -d .vnc .vnc [tchung@tchung101 tchung]$ ls .vnc passwd [tchung@tchung101 tchung]$ CODE:
[tchung@tchung101 tchung]$ sudo /sbin/service vncserver start
察看一下.vnc这个目录的内容,应该类似于下面的东西.Starting VNC server: 1:tchung [ OK ] [tchung@tchung101 tchung]$ CODE:
[tchung@tchung101 tchung]$ cd .vnc
编辑这个名为xstartup的脚本,注意到下面红色的部分的注释[tchung@tchung101 .vnc]$ ls passwd tchung101:1.log tchung101:1.pid xstartup [tchung@tchung101 .vnc]$ 将这两行标记成红色的内容前面的注释符号去掉,否则你将只能得到一个什么都没有的灰屏。#!/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 & 因为我们已经修改了启动脚本,现在来重新启动vncserver. CODE:
[tchung@tchung101 tchung]$ sudo /sbin/service vncserver restart
那么怎样来连接到vncserver? 照下面使用客户端的vncviewer命令.Shutting down VNC server: 1:tchung [ OK ] Starting VNC server: 1:tchung [ OK ] [tchung@tchung101 tchung]$ [tchung@tchung101 tchung]$ vncviewer localhost:1 输入你的vnc口令,看一下结果 更新: 在使用防火墙的情况下来连接到一个远程系统,需要打开端口5901. 加入以下红色的部分,然后重启iptables服务。 [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接受两个不同的用户: CODE:
VNCSERVERS="1:tchung 2:thomasc"
当然你要为两个用户分别运行vncpasswd来设置口令. 并且在你的防火墙修改中,你应该明白VNC使用端口5901给连接1用,如果象上面一样要支持两个用户,应同时打开5901和5902. 远程桌面设置part2:利用putty进行vnc + ssh tunneling 作者:yunqing at 转贴请注明出处 在前面有vnc server 设置的文章(http://bbs./forum/viewtopic.php?t=368552&highlight=yunqing)里, 我们已经可以在一个linux的服务器上运行vncserver来进行远程访问了,但需要注意的是,如果直接使用vncviewer来进行访问,有两点不利因素: 1. 口令传输是明文,很容易被侦听到. 2. 防火墙需要打开59xx端口,这在通常的单位里是不可能的. 幸运的是,我们有ssh这个强大的工具,象X11 Forwarding(另文论述),我们可以使用ssh隧道来保护通讯过程,下面就进行简单介绍. 假设vncserver运行在服务器 myserver (ip地址为:192.168.x.x)的屏幕1,也就是侦听 192.168.x.x:5901, 用户名为foo 情形一: vnc客户端为linux 这种情形很简单,一般的linux发行版本里面都默认安装了ssh套件. 1. 用ssh登录到服务器 ssh -L 5901:localhost:5901 -l foo myserver 或者直接用ip地址 ssh -L 5901:localhost:5901 -l foo 192.168.x.x 2. 在本机的另外开的终端上,运行vncviewer (或其它的类似工具) vncviewer localhost:1 情形二: vnc客户端为windows 1. 下载一个ssh客户端,个人推荐putty,只有一个程序,不需要安装,简单而功能齐全. 到这里下载http://www.chiark./~sgtatham/putty/download.html 下载putty.exe到桌面上直接运行即可。 2. 运行putty,输入服务器的ip地址,输入一个名字,这里myserver作为session的名字,按save保存。见附图一 3. 单击对话框左边的tunnels来选择相关设置,在source port里输入5901,在Destination里输入localhost:5901,按Add添加,如附图二 4. 单击左边session,回到session设置,按save重新保存。按open即可登录到服务器。 5. 运行vnc-viewer (如果没有,到这里下载http://www./download.html,只要一个exe的文件就行),在Server里输入localhost:1,见附图三, 输入口令后一个linux的桌面就会出现在windows里,并且是非常安全的,Cool? 另请参阅: 远程桌面设置part1:VNCserver在Fedora上配置过程(转译)(http://bbs./forum/viewtopic.php?t=368552&highlight=yunqing)
|
|