tigervnc 是client-server的工作模式,默认是不加密的,可以使用ssh forwarding map来加密这个连接
在rhel7之前tigervnc的配置文件被放在/etc/sysconfig/ 文件夹中
在rhel7中其配置文件放在/etc/systemd/system/ 中
每个用户对应个配置文件,文件名如:vncserver-root (rhel7之前) [email protected](rhel7)
vncserver 是一个能开启vnc桌面的工具,它会使用适当选线来运行Xvnc 并在vnc 桌面上运行一个window manager。
vncserver允许多个会话同时并行访问一台主机,允许多个用户从任何地方访问某台主机
服务端安装:
yum install tigervnc-server
客户端安装:
yum install tigervnc
配置:
示例配置文件是 /lib/systemd/system/[email protected]内容如下:
[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 %i > /dev/null 2>&1 || :'
ExecStart=/sbin/runuser -l -c "/usr/bin/vncserver %i [-geometrysize]" //可以使用具体的用户名替换掉,一旦这个服务开启这个用户就可以登录了,%i,代表的是window号码,这个号码是唯一,systemd会自动根据用户在启动该unit时指定的window号码来替换。 -geometrysize:指定桌面分辨率,如果不指定,则size默认为1024*768
PIDFile=/home//.vnc/%H%i.pid //同上
ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
[Install]
WantedBy=multi-user.target
******可以为多个用户创建多个 unit file,然后给它们一个唯一名,并放到 /etc/systemd/system中,当某个用户需要使用远程桌面时,就启动对应的unit file。
文件配置完成后,需要重新整理systemd依赖关系,只要修改了unit file就要重新整理:
systemctl daemon-reload
修改vnc连接的密码:
su - username
vncpasswd
密码必须设置否则无法登陆
启动:
systemctl start vncserver-username@:window_number.service
开机就启动某个window
systemctl enable vncserver-username@:window_number.service
客户端连接:
客户端程序vncviewer
输入vncserver地址和窗口号:vncserver:window_number
输入vnc-password
为 vnc 配置防火墙:
使用非加密的链接,默认会被firewalld blocked 掉,想要 vnc正常工作就需要让firewalld开放相应的端口才行。
vnc默认的端口号为5900,而每个vnc window的端口号是: 5900+window_number(or,display_number)
如:systemctl start vncserver-username@:2.service 那么这个vnc window的端口号就是 5902
设置:
firewall-cmd --list-all //查看防火墙规则
firewall --add-rich-rule='rule family="ipv4" source address="client_ip" service name=service_name accept' //[--permanent] 指定是否永久生效, --zone指定将该rule放到哪个zone当中,这样从这个地址来的任何流量都可以通过!!
也可以只打开指定端口:
firewall-cmd --zone=public --add-port=590*/tcp
使用ssh连接:
vncviewer-viausername@vncserverlocalhost:window_number (使用 ssh forwarding)//localhost一定要加,否则无法连接
避免使用不安全的链接:
将unit file中的 ExecStart=/sbin/runuser -l user -c "/usr/bin/vncserver-localhost%i"
-localhost 参数可以让vncserver不接受 除本机及ssh forwarding 以外的任何连接。