linux下vnc远程桌面server配置教程
http://www.aiezu.com/article/linux_vnc_server_conf.aspx
用vnc实现远程桌面共享(支持windows, linux,...)
http://easwy.com/blog/archives/linux-remote-desktop-by-vnc/
# [ 原理 ]#
#--------------------------------------------
vnc,全称为virtual network computing,使用 rfb(remote framebuffer,远程帧缓冲)
协议来实现远程控制另外一台计算机。把键盘、鼠标动作发送到远程计算机,并把远程计算机的屏幕发回到本地
vnc技术与平台无关,vnc viewer可以和vnc server在不同的操作系统上
vnc几乎支持所有的操作系统,也支持java,甚至可以通过支持java的浏览器来访问vnc server
多个 vnc 客户端可以同时连接到一个 vnc server
显示编号(display number)来区分,每个vncserver服务监听3个端口,分别是:
5800+显示编号: vnc的httpd监听端口,如果vnc客户端为ie,firefox等非vncviewer时必须开放。
5900+显示编号: vnc服务端与客户端通信的真正端口,必须无条件开放。
6000+显示编号: x监听端口,可选。
首先需要配置 vnc 密码,密码在使用客户端连接服务器时使用
注意:vnc 密码保存在用户的主目录中,每个用户都可以设置自己的密码
因此,请使用你的用户名(尽量不要使用root)运行下列命令:
在启动vnc server时,需要为 server指定一个display参数
可以把display理解为一个桌面,每个用户都可以有自己的桌面,在系统中,display号不能重复
vnc server监听的端口从5801开始,display :1的监听5801,display :2监听5802,以此类推
#
# [ /etc/sysconfig/vncservers ]# {{{
显示编号、开放的端口分别由
/etc/sysconfig/vncservers 文件中 vncservers 和 vncserverargs 控制
vncservers的设置方式为
vncservers="显示编号1:用户名1 …",如:vncservers="1:root 2:aiezu"
vncserverargs 设置方式为
vncserverargs[显示编号1]="参数一 参数值一 参数二 参数值二 ……"
如vncserverargs[2]="-geometry 800x600 -nohttpd"
vncserverargs的详细参数有:
-geometry 桌面分辨率,默认1024x768;
-nohttpd 不监听http端口(58xx端口);
-nolisten tcp 不监听x端口(60xx端口);
-localhost 只允许从本机访问;
-alwaysshared 默认只同时允许一个vncviewer连接,此参数允许同时连多个vncviewer;
-securitytypes none 登录不需要密码认证vncauth默认值,要密码认证。
# vi /etc/sysconfig/vncserver
vncservers="1:root 2:oracle"
vncserverargs[1]="-geometry 1024x768 -nolisten tcp"
vncserverargs[2]="-geometry 1024x768 -nolisten tcp"
# [ 设置用户登录密码 / 生成用户配置文件 ]# {{{
设置vnc用户密码:
# xxx 此步不可跳过放在后面操作,否则vnc server将无法启动
# su - ink
# vncpasswd
password:
verify:
# su - root
password:
verify:
# [ 启动 vncserver ]
# service vncserver start
运行上面命令后,分别会在用户根目录($home)下的".vnc"文件夹下生成一系列文件
其中passwd为vnc用户密码文件,由vncpasswd生成。xstartup为vnc客户端连接时启动的脚本
启动vnc server的命令是:
vncserver
# vncserver
new 'localhost.localdomain:1 (root)' desktop is localhost.localdomain:1
starting applications specified in /root/.vnc/xstartup
log file is /root/.vnc/localhost.localdomain:1.log
# [ 自定义 xstartup ]#
修改".vnc/xstartup"文件
vncserver 默认使用的窗口管理器是 twm
编辑这个文件:.vnc/xstartup
#!/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 &
# gnome-session &
重启 vncserver 使配置生效
# }}}
# [ 配置防火墙 ]#
必须允许vnc的相关端口(58xx,59xx,60xx)
vi /etc/sysconfig/iptables
-a rh-firewall-1-input -m state –state new -m tcp -p tcp –dport 5900:5903 -j accept
允许其它机器访问本机的5900到5903端口,这样,display:1, display:2, display:3 用户就可以连接到本机
我的是 -a rh-firewall-1-input -m state –state new -m tcp -p tcp –dport 5801:6003 -j accept
安装vnc时,要检查一下iptables的设置,如果没有开放vnc端口的访问,是连接不上的,而且vnc客户端会提示 failed connection:操作成功完成!(0)这样的错误提示!
#-------------------------------------------
在windows下使用vncviewer+putty.exe通过ssh安全通道连接:
打开putty,在左边的"category"中依次点"connection"->"ssh"->"tunnels"
在"source port"文本框中输入"5901","destination"文本框中输入"localhost:5901"
点击"add,添加端口转发。然后在putty左边的"category"下点"session"
输入服务器的ip地址后,点"open"按钮,输入密码登陆后,既成功启用了端口转发
接着在本机打开vncviewer输入"127.0.0.1:5901"即可成功连接到远程的5901端口
在linux下使用vncviewer+ssh安全通道连接:
与④类似,在linux vnc客户端shell下运行"ssh -l 5901:localhost:5901 vncserverhost"命令
输入用户名密码。即完成通过shh安全通道,将远程的5901端口转发到本机的5901端口
然后在shell下运行"vncviewer 127.0.0.1:1"命令即可以连接到远程的vnc server
#
查看vnc正在运行的显示编号端口号?
答:在linux命令提示符下执行"netstat -tlup|grep vnc",即可以查看到端口号,端口号后两位即显示编号
如何关闭指定的显示编号?
答:vncserver -kill :number 即可以关闭指定的显示编号和对应的端口号
在通过vnc连接的图形界面桌面启动x应用时出现:"error: can't open display: :0.0"错误?
答:请使用"echo $display"命令查看"display"坏境变量是否设置为":显示编号:0",如:":1:0"
如果不是此形式,启动x应用时会出现此错误。此时可以通过"export display=:1:0"设置正确的display
还有一种可能就是切换了用户启动x应用,当前用户没有权限使用x窗口,这时返回到启用vnc的用户
运行"xhost +"允许其他用户访问此x窗口即可
<b>如果配置完成后出现能够通过键盘输入数字,但是不能输入字符的情况,就要看看你的客户端的输入法的设置是否和服务器端的设置是否一致。一般两端都要是英文的!</b>