[转载]在Window下使用VNC远程桌面CentOS/Redhat

[musiccow]转载自http://www.cnblogs.com/niocai/archive/2011/11/02/2233332.html文中叙述的方法对其他的vncserver和linux发行版也基本适用,只是一些安装或命令不一样,流程是一样的。

我的CentOS版本是6.0,下述方法在i386和x86_64中均适用,因为我32位和64位的CentOS都装了~

1.CentOS 安装tigervncserver

yum install tigervnc-server libvncserver tigervnc

将tigervnc-server,libvncserver,tigervnc安装了


2.配置vncservers,假设你有两个用户想要远程登录,用户名分别是user1,user2

#vi /etc/sysconfig/vncservers

在这个文件末添加

VNCSERVERS="1:user1 2:user2"
VNCSERVERARGS[1]="-geometry 1440x900"
VNCSERVERARGS[2]="-geometry 1440x900"

不要用默认的VNCSERVERARGS[1]="-geometry 1440x900 -tcp -nolisten -localhost" 否则监听端口不会启动。

如果你还有更多用户想远程登录,就得在VNCSERVERS这一行中继续添加3:user3等等,下面的VNCSERVERARGS[i]是对应第i个用户远程登录的参数。这个参数还有好多选项,我也不大清楚用处,所以我就设置了一下分辨率,你可以根据自己的需要将1440x900改成你想要的分辨率,默认的话是800x600~


3.生成xstartup+设置vncpasswd。刚安装完的时候xstartup是不存在的,vncserver第一次运行的时候会自动生成此文件。

复制代码
//切换用户
[*@* ~]$su - user1
passwd:
//设置vncpasswd,你使用vnc连接的时候,提示输入密码时,就是输入这个密码,而不是系统中user1的密码
[user1@* ~]$vncpasswd
passwd:
verify:
//启动vncserver,生成xstartup
[user1@* ~]$vncserver

New '*:1 (user1)' desktop is *:1

starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/*:1.log

[user1@* ~]$
复制代码

由于这里举例是希望两个用户user1和user2都能远程登录,因此同样的命令需要用user2使用一次

复制代码
//切换用户
[*@* ~]$su - user2
passwd:
//设置vncpasswd,你使用vnc连接的时候,提示输入密码时,就是输入这个密码,而不是系统中user1的密码
[user2@* ~]$vncpasswd
passwd:
verify:
//启动vncserver,生成xstartup
[user2@* ~]$vncserver

New '*:2 (user2)' desktop is *:2

starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/*:2.log

[user2@* ~]$
复制代码
如果你还有更多用户需要远程登录,我也不知道有什么好办法,一个一个来吧~~
特别注意:上面每个用户启动vncserver的时候,都会有一行
 
New '*:2 (user2)' desktop is *:2
的提示,这句话很重要!其中的数据2就是桌面号,意思就是user2的桌面号是2
具体自己用户的桌面号是多少,每次启动vncserver的时候都可能会变,要记住自己的桌面号,后面要用到
 

4.停止vncserver

法一:切换到各个用户,停止自己的远程桌面,冒号后面的数字对应自己的桌面号,上面提到过的~

复制代码
[*@* ~]$su - user1
passwd:
[user1@* ~]$vncserver -kill :1
[user1@* ~]$su - user2
passwd:
[user2@* ~]$vncserver -kill :2
复制代码

法二:切换到root用户,停止远程桌面

[*@* ~]$su - root
passwd:
[root@* ~]#vncserver -kill :1
[root@* ~]#vncserver -kill :2

法三:停止vncserver服务

[*@* ~]$su - root
passwd:
[root@* ~]#service vncserver stop

法四:直接杀死远程桌面进程

[*@* ~]$su - root
passwd:
[root@* ~]#ps -ef | grep vnc
[root@* ~]#kill -9 进程号1 进程号2 进程号3


5.修改xstartup(如果VNC连接以后没有图像,请按下面改)

[*@* ~]$su - root
passwd:
[root@* ~]#gedit /home/user1/.vnc/xstartup
[root@* ~]#gedit /home/user2/.vnc/xstartup
[root@* ~]#

将最近两行加注释,并加一行,原文最后两行如下

xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
twm &

修改以后如下

#xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
#twm &
gnome-session &


6.启动vncserver

[*@* ~]$su - root
passwd:
[root@* ~]#service vncserver start

使用这个命令会为每一个你前面添加的用户启动一个远程桌面,你需要记住自己的桌面号!

 

7.关闭防火墙

[*@* ~]$su - root
passwd:
[root@* ~]#service iptables stop

我只是简单的关闭防火墙,如果你需要用到防火墙,那就需要设置防火墙,让vncserver能够通信,要不然连不上去的。

特别注意:这里只是暂时关闭防火墙,系统下次启动的时候防火墙又启动了!如果你想永久关闭防火墙,需要如下命令关闭防火墙开机自启动。

[*@* ~]$su - root
passwd:
[root@* ~]#chkconfig iptables off

如果你不想关闭防火墙,那么就得在防火墙中设置例外规则,将5901-590x端口开放。

具体规则是如何写的,推荐你别上网搜,而是用命令“man iptables”来查看防火墙的帮助文档,这个文档是你系统版本防火墙的帮助文档,而上网搜的帮助文档可能不是一个版本。例如我上网看的iptables配置就是1.1.19版本的,而我系统的iptables是1.4.7版本的,看完以后,按说明添加规则后,重启防火墙的时候说规则无效~因为版本不同,有些规则已经改变写法,这个很正常,不过大部分规则是没有变动的。

想开放端口,首先编辑防火墙的配置文件,默认的是在/etc/sysconfig/iptables中。这个配置文件在什么地方上面那个帮助文档里一般都会告诉你的,所以有时间的话看看也不错,当作学习。

[*@* ~]$netstat -tulnp | grep X
tcp        0      0 0.0.0.0:5901                0.0.0.0:*                   LISTEN      5469/Xvnc tcp        0      0 0.0.0.0:6001                0.0.0.0:*                   LISTEN      5469/Xvnc tcp        0      0 :::6001                     :::*                        LISTEN      5469/Xvnc

一定看到0 0.0.0.0:5901,  0 0.0.0.0:6001, 0 :::6001这样的字样,如果看到127.0.0.1:5901这样的是不行的,

说明vncserver有问题,需要运行vncserver -kill :1然后vncserver :1来重新运行vncserver

[*@* ~]$su - root
passwd:
[root@* ~]#gedit /etc/sysconfig/iptables

在这个文件里添加一行

-A INPUT -m state --state NEW -m tcp -p tcp --dport 5901:5910 -j ACCEPT

这句话的意思就是将本机的5901~5910端口的tcp连接允许通过~
注意添加行的位置:不行把这行添到文件末尾,那样基本上应该没有用。

这个文件里一般都会有这么几行

-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT  
-A INPUT -p icmp -j ACCEPT    
-A INPUT -i lo -j ACCEPT  

在这三行后面另起一行,添加进去


[musiccow]由于我们公司设置了特殊的过滤机制,每次改完iptables重启之后生成的iptables都会被还原掉,端口号怎么都加不进去。后来才知道在其他地方还有规则限制,必须解除掉。
Enabling the ibm-firewall for Windows shares
Change to the iptables (ibm-firewall) folder for input rules:

cd /etc/iptables.d/filter/INPUT
Create a new rules file for the CIFS and NETBIOS rules, like for example:
sudo gedit 55-c4eb-allow_cifs_and_netbios.rule
Add the following lines:
# Microsoft Naked CIFS - microsoft-ds
-A INPUT -p tcp -m tcp --dport 445 -j ACCEPT
# NETBIOS Name Service - netbios-ns
-A INPUT -p udp -m udp --dport 137 -j ACCEPT
# NETBIOS Datagram Service - netbios-dgm
-A INPUT -p udp -m udp --dport 138 -j ACCEPT
# NETBIOS session service - netbios-ssn
-A INPUT -p tcp -m tcp --dport 139 -j ACCEPT
Additionally you have to make sure that there are no drop entries for the Window share related ports 137, 138, 139 or 445 inside the drop rules file:

/etc/iptables.d/filter/INPUT/75-c4eb-drop.rule
If there are some drop rules listed, please remove them or comment them out (put a "#" at the beginning of the line).
Save the iptables ruleset.
sudo service iptables save
Now reset the firewall settings:
sudo service iptables reset //有的系统没有reset只有restart
And restart the firewall again:
sudo service iptables restart
or

sudo /etc/init.d/iptables restart
To verify if your new rules are active execute the following command:
sudo iptables-save | grep -i -E "(445|137|138|139)"
The lines listed should now show ACCEPT for the ports and no longer DROP.

For problem determination please see the following commands:
The firewall can be temporarily disable it with:
sudo service iptables stop
But remember to start it again with:
sudo service iptables start

Otherwise you are no longer ITCS 300 compliant (at least until the next reboot).

To check if the firewall is running and if the IBM rules are active execute:
sudo service iptables status
If the last line of the output contains fail the firewall is not active,
in case of done the firewall is active.


 

8.安装vnc客户端,我使用ultravnc,下载地址

http://www.uvnc.com/downloads/ultravnc.html

安装完了以后,启动TigerVNC Viewer,如下图,


输入“IP:桌面号”,点“Connect”,进入下图

输入你使用vncpasswd命令设置的密码,即可登录了~

 

9.添加vncserver自启动

[*@* ~]$su - root
passwd:
[root@* ~]#chkconfig vncserver on

 

TROUBLE SHOOTING

问题1:

复制代码
[root@* ~]# service vncserver start
Starting VNC server: 1:user1
Warning: *:1 is taken because of /tmp/.X1-lock
Remove this file if there is no X server *:1
A VNC server is already running as :1
[FAILED]
复制代码

解决办法:把/tmp下的所有文件(包括隐藏文件)全删除。

复制代码
//删除一般临时文件
[root@* ~]#rm -rf /tmp/*
//删除隐藏临时文件,这里有两个提示忽略。
[root@* ~]#rm -rf /tmp/.*
rm: cannot remove directory: `/tmp/.'
rm: cannot remove directory: `/tmp/..'
//确保tmp下只包含.和..
[root@* ~]#ls -a /tmp
.  ..
[root@* ~]#
复制代码

 








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值