Centos7与Centos6.x有了很大的不同。
为了给一台服务器装上远程桌面,走了不少弯路。写这篇博文,纯粹为了记录,以后如果遇到相同问题,可以追溯。
1、假定你的系统没有安装vnc的任何软件,那么,首先安装vnc
1
|
yum -y install tigervnc-server tigervnc
|
2、Centos7之前的系统,如果安装vnc一般都需要配置
1
2
|
[root@localhost ~] # cat /etc/sysconfig/vncservers
# THIS FILE HAS BEEN REPLACED BY /lib/systemd/system/vncserver@.service |
但是,如上所述,Centos7需要配置的文件在
1
2
|
[root@localhost ~] # ll /lib/systemd/system/vncserver@.service
-rw-r--r--. 1 root root 1744 Jun 10 14:15 /lib/systemd/system/vncserver @.service
|
3、文件内有如下提示
1
2
3
4
5
6
|
# Quick HowTo: # 1. Copy this file to /etc/systemd/system/vncserver@:<display>.service # 2. Edit <USER> and vncserver parameters appropriately # ("runuser -l <USER> -c /usr/bin/vncserver %i -arg1 -arg2") # 3. Run `systemctl daemon-reload` # 4. Run `systemctl enable vncserver@:<display>.service |
4、复制一份文件,并改名为vncserver@:1.service
1
|
[root@localhost ~] # cp /lib/systemd/system/vncserver@.service /lib/systemd/system/vncserver@:1.service
|
5、将文件中的<User>用你当前的用户替换,将%i替换为1
1
2
3
4
5
6
7
8
9
10
11
12
|
[Unit] Description=Remote desktop service (VNC) After=syslog.target network.target [Service] Type=forking # Clean any existing files in /tmp/.X11-unix environment ExecStartPre= /bin/sh -c '/usr/bin/vncserver -kill :1 > /dev/null 2>&1 || :'
ExecStart= /sbin/runuser -l root -c "/usr/bin/vncserver :1 -geometry 1280x720 -depth 24"
PIDFile= /root/ .vnc/%H%i.pid
ExecStop= /bin/sh -c '/usr/bin/vncserver -kill :1 > /dev/null 2>&1 || :'
[Install] WantedBy=multi-user.target |
6、更新systemctl
1
|
systemctl daemon-reload |
7、设置为自动启动
1
|
systemctl enable vncserver@:1.service
|
8、启动vnc服务
1
|
systemctl start vncserver@:1.service |
9、在iptables中加入对应的端口5901(注意,如果有其他用户,那么也需要将端口加上。vnc的端口默认是5900 + n)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
[root@localhost system] # cat /etc/sysconfig/iptables
# sample configuration for iptables service # you can edit this manually or use system-config-firewall # please do not ask us to add additional ports/services to this default configuration *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 5901 -j ACCEPT -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT |
注意:
1、如果你不配置和启用防火墙,此时用VNC Viewer连接的话,会报:"connect:Connection timed out(10060)"错误。
2、本文是以root用户为例,如果其他用户也需要登录,那么,还需要将文件复制为
1
|
cp /lib/systemd/system/vncserver @.service /lib/systemd/system/vncserver @:2.service
|
同时,将文件内的%i改为2,并建立对应用户的vncpasswd。
3、你可以通过UltraVNC,TigerVNC或者RealVNC Viewer进行访问,我在win7下使用这3中工具均能连接