ubuntu可参考
https://help.ubuntu.com/community/VNC/Servers#Start\_TigerVNC\_vncserver\_at\_boot
查看是否安装桌面
sudo yum grouplist
若没有以上两项,安装sudo yum groupinstall -y "GNOME Desktop" "Graphical Administration Tools"
安装vnc-server
yum install tigervnc-server -y
ubuntu14.04:wget https://bintray.com/artifact/download/tigervnc/stable/ubuntu-14.04LTS/amd64/tigervncserver_1.6.0-3ubuntu1_amd64.deb
sudo dpkg -i tigervncserver_1.6.0-3ubuntu1_amd64.deb
如果发现依赖错误:sudo apt-get install -f
vnc运行机制
Linux下的VNC可以同时启动多个vncserver,各个vncserver之间用显示编号(display number)来区分,每个vncserver服务监听3个端口,它们分别是:
1、5800+显示编号: VNC的httpd监听端口,如果VNC客户端为IE,Firefox等非vncviewer时必须开放。
2、5900+显示编号: VNC服务端与客户端通信的真正端口,必须无条件开放。
3、6000+显示编号: X监听端口,可选。
显示编号、开放的端口分别由/etc/sysconfig/vncservers(ubuntu 14.04为 /etc/default/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默认值,要密码认证。
配置vnc-server:centos7方式1
(可省略)
假设登录用户为vnc,复制一份通用的VNC服务文件来为用户vnc创建一个VNC服务配置sudo cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service
sudo vi /etc/systemd/system/vncserver@:1.service
打开文件后找到以下内容,替换ExecStart=/sbin/runuser -l <USER> -c "/usr/bin/vncserver %i"
PIDFile=/home/<USER>/.vnc/%H%i.pid
重新加载服务来使新的VNC配置生效sudo systemctl daemon-reload
配置vnc-server:方式2
(可省略)sudo vi /etc/sysconfig/vncserver
ubuntu 14.04:sudo vi /etc/default/vncservers
添加以下内容:1
2VNCSERVERS="1:vnc"
VNCSERVERARGS[1]="-geometry 1600:900 -nolisten tcp"
重新加载服务来使新的VNC配置生效sudo systemctl daemon-reload
ubuntu 14.04:sudo service vncserver restart
开机启动
在启动时自动启动VNC服务sudo systemctl enable vncserver@:1.service
ubuntu14.04: enable the service at boot with:sudo update-rc.d vncserver defaults
设置VNC用户密码
切换到vnc用户,并运行vncpasswd
命令,输入远程连接密码
运行vncserver
命令,显示的序号是在5900基础上加上虚拟机中的VNC序号。
运行上面命令后,会在用户根目录($HOME)下的”.vnc”文件夹下生成一系列文件。其中passwd为vnc用户密码文件,由vncpasswd生成。其他的都由vnc初次启动时生成,xstartup为VNC客户端连接时启动的脚本。
重新加载服务来使新的VNC配置生效sudo systemctl daemon-reload
ubuntu 14.04:sudo service vncserver restart
开启VNC端口
开放的端口为5900+VNC序号sudo iptables -I INPUT -p tcp --dport 5901 -j ACCEPT
查看vnc在服务器上的端口号
netstat -lp|grep -i vnc
客户端访问
下载vnc viewer,server框中输入ip:1(1代表上面配置的远程用户代号,配置文件中可以配置多个远程用户)或者ip:port,输入VNC密码,连接到远程桌面。
ubuntu没有显示菜单栏
修改~/.vnc/xstartup,将其内容替换为以下内容,确保软件都安装过。1
2
3
4
5
6
7
8
9
10
11
12
13#!/bin/sh
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
x-terminal-emulator -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
gnome-session --session=gnome-flashback &
gnome-panel &
gnome-settings-daemon &
metacity &
nautilus &
vncconfig -nowin &i
session参数可在/usr/share/gnome-session/sessions/
中查看。
vnc加密
从设计上说,VNC使用的远程帧缓存(RFB)并不是一种安全的协议,VNC客户端直接连接到VNC服务器上并不明智。任何敏感信息在VNC流量中被轻易地泄露。因此,建议使用SSH隧道来加密VNC流量。
在运行VNC客户端的本机上,使用下面的命令来创建一个连接到远程VPS的SSH通道。当被要输入SSH密码时,输入用户的密码。ssh vnc@<VPS-IP-address> -L 5901:127.0.0.1:5901
一旦SSH通道建立,远程VNC流量就会通过ssh通道路由并发送到127.0.0.1:5901。现在启动VNC客户端(比如:vinagre),来连接到127.0.0.1:5901。
ubuntu 14.04重启服务:sudo service vncserver restart