zoukankan      html  css  js  c++  java
  • CentOS7 下VNC Server远程桌面配置详解

    VNC:VNC(Virtual Network Computing),为一种使用RFB协议的屏幕画面分享及远程操作软件。此软件借由网络,可发送键盘与鼠标的动作及即时的屏幕画面。VNC与操作系统无关,因此可跨平台使用,例如可用Windows连线到某Linux的计算机,反之亦同。甚至在没有安装客户端程序的计算机中,只要有支持JAVA的浏览器,也可使用。VNC包含客户端和服务器两个操作软件。
    VNC Server:VNC服务器,接收VNC Viewer的连接请求,传输画面到客户端。本例需要在centos7上安装VNC Server
    VNC Viewer:VNC客户端,将键盘和鼠标的动作转递给服务器,本例需要在windows上安装Viewer连接到远程的Linux服务器

    一、如果当前系统没有桌面环境,需要先安装桌面环境。
    1、更新系统
    ---------------------------------------------------------------------------------------------
    [root@CentOS7 ~]# yum update     ##避免一些系统方面的意外错误,最好更新yum到最新,生产环境有业务在运行不建议更新
    ---------------------------------------------------------------------------------------------

    2、安装GNOME Desktop图形桌面服务
    ---------------------------------------------------------------------------------------------
    [root@CentOS7 ~]# yum groupinstall "GNOME Desktop"
    ---------------------------------------------------------------------------------------------

    3、查看系统运行模式
    ---------------------------------------------------------------------------------------------
    [root@CentOS7 ~]# systemctl get-default
    ---------------------------------------------------------------------------------------------

    4、切换到桌面运行模式
    ---------------------------------------------------------------------------------------------
    [root@CentOS7 ~]# systemctl set-default graphical.target
    ---------------------------------------------------------------------------------------------

    5、启动桌面模式
    ---------------------------------------------------------------------------------------------
    [root@CentOS7 ~]# init 5
    ---------------------------------------------------------------------------------------------


    二、VNC配置

    1、安装vnc,CentOS7默认使用tigervnc软件提供vnc服务
    ---------------------------------------------------------------------------------------------
    [root@CentOS7 ~]# yum install tigervnc-server
    ---------------------------------------------------------------------------------------------

    2、启动VNC服务
    使用vncserver命令启动VNC服务,命令格式为“vncserver :桌面号”,其中“桌面号”用“数字”的方式表示,每个用户连接需要占用1个桌面
    启动编号为1的桌面示例如下
    ---------------------------------------------------------------------------------------------
    [laopi@CentOS7 ~]$ vncserver :1

    You will require a password to access your desktops.

    Password:                                ##登录vnc的密码,以后可用通过vncpasswd命令更改密码
    Verify:                              ##重新输入登录vnc的密码
    Would you like to enter a view-only password (y/n)? n         ##是否设置只查看用户密码,这里不设置
    A view-only password is not used

    New 'CentOS77:1 (laopi)' desktop is CentOS7:1

    Creating default startup script /home/laopi/.vnc/xstartup
    Creating default config /home/laopi/.vnc/config
    Starting applications specified in /home/laopi/.vnc/xstartup
    Log file is /home/laopi/.vnc/CentOS7:1.log
    ---------------------------------------------------------------------------------------------
    命令的执行是在需要远程登陆的laopi用户下执行的,同时也是第一次执行,会在此用户的主目录(/home/laopi/)下生成.vnc子目录和相应的配置文件,同时需要输入密码(vncviewer端用此用户访问的密码),这个密码被加密保存在此用户主目录下的.vnc子目录(/home/laopi/.vnc/passwd)中;同时在用户主目录下的.vnc子目录中为用户自动建立xstartup配置文件(/home/laopi/.vnc/xstartup),在每次启动VNC服务时,都会读取该文件中的配置信息。上面的是添加普通用户通过VNC访问权限,如果想添加其他用户访问权限,需要在相应的用户命令提示符下进行上面的操作(如test用户也需要执行[test@ localhost ~]$ vncserver :1 在相应的主目录下生成对应的.vnc子目录)。对不同用户的访问密码更改也需要在相应的命令提示符下操作。
    在/home/laopi/.vnc/目录下还有一个“CentOS7:1.pid”文件,这个文件记录着启动VNC后对应操作系统的进程号,用于停止VNC服务时准确定位进程号.

    3、VNC服务使用的端口号与桌面号的关系
    VNC服务使用的端口号与桌面号相关,VNC使用TCP端口从5900开始,对应关系如下
    桌面号为“1” ---- 端口号为5901
    桌面号为“2” ---- 端口号为5902
    桌面号为“3” ---- 端口号为5903
    .......
    基于上面的介绍,如果Linux开启了防火墙功能,就需要手工开启相应的端口.

    4、防火墙设置,这里我就粗暴的把防火墙关了

    ---------------------------------------------------------------------------------------------
    [laopi@CentOS7 ~]# systemctl stop firewalld.service       ##停止firewall
    [laopi@CentOS7 ~]# systemctl disable firewalld.service       ##禁止firewall开机启动

    ---------------------------------------------------------------------------------------------

    5、测试VNC服务,通过RealVNC Viewer客户端软件进行测试

    设置登录信息

    进行登录

    登录成功后输入系统的用户名密码就可用登录了

    三、配置多个桌面
    可以使用如下的方法启动多个桌面的VNC
    vncserver :1
    vncserver :2
    vncserver :3
    ……
    但是这种手工启动的方法在服务器重新启动之后将失效,因此,下面介绍如何让系统自动管理多个桌面的VNC,方法是创建 Systemd Unit文件.
    文件的格式为:vncserver@:桌面号.service,Unit文件方便快速的启动,停止,重启服务

    1、为laopi用户创建 Systemd Unit文件。(第一个用户vncserver@:1.service,第二个用户vncserver@:2.service,其他以此类推),可用通过复制模板文件方式创建
    ---------------------------------------------------------------------------------------------
    [root@CentOS7 ~]# cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service        ##需要root用户操作
    ---------------------------------------------------------------------------------------------

    3、修改/etc/systemd/system/vncserver@:1.service文件,复制过来的这个文件是个模板文件,替换文件里面的<user>为需要登陆的用户, Type由默认的forking改为simple,这里如果不更改后面的启动会报错
    ---------------------------------------------------------------------------------------------
    [user1@localhost ~]$ vim /etc/systemd/system/vncserver@:1.service
    [Unit]
    Description=Remote desktop service (VNC)
    After=syslog.target network.target
    [Service]
    Type=simple                                 ##这里将forking改为simple
    ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
    ExecStart=/usr/sbin/runuser -l laopi -c "/usr/bin/vncserver %i"          ##这里将<user>更改为需要登陆的用户laopi
    PIDFile=/home/laopi/.vnc/%H%i.pid                        ##这里将<user>更改为需要登陆的用户laopi
    ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
    [Install]
    WantedBy=multi-user.target
    ---------------------------------------------------------------------------------------------

    3、刷新systemctl
    ---------------------------------------------------------------------------------------------
    [root@CentOS7 ~]# systemctl daemon-reload
    ---------------------------------------------------------------------------------------------

    4、启动服务
    ---------------------------------------------------------------------------------------------
    [root@CentOS7 ~]# systemctl start vncserver@:1.service     #启动
    ---------------------------------------------------------------------------------------------
    如果启动服务器失败如果如下所示:
    [root@CentOS7 ~]# systemctl start vncserver@:1.service
    Job for vncserver@:1.service failed because a configured resource limit was exceeded. See "systemctl status vncserver@:1.service" and "journalctl -xe" for details.
    ---------------------------------------------------------------------------------------------
    上面的错误很有可能是Type没有由默认的forking改为simple,更改后重启服务,一次不好用就多重启几次,因为这个原因我浪费的大半天的时间,很多文章写的都不需要更改这个但是我在CentOS7.7下只有更改了这个选项才好用,不知道为什么,也有说通过
    这个方法解决:删除/tmp/.X11-unix/ 目录,再启用一次即可,这个没有验证只是记录下

    5、设置服务开机启动
    ---------------------------------------------------------------------------------------------
    [root@CentOS7 ~]# systemctl enable vncserver@:1.service
    ---------------------------------------------------------------------------------------------

    6、常用选项
    ---------------------------------------------------------------------------------------------
    systemctl stop vncserver@:1.service            #关闭
    systemctl restart vncserver@:1.service             #重启
    ---------------------------------------------------------------------------------------------

    7、查看服务器的状态

    上面的状态才是正常的,如果不是请进行排查

    注意:上面的配置完成以后重启系统,当常看vncserver@:1.service的服务时状态不正常,但是依然可用连接,重启服务后状态正常,暂时还不知道什么原因,如下所示会有红字体的报错

     参考:

    http://blog.itpub.net/31559985/viewspace-2674525/

    https://blog.51cto.com/shaonian/2090283

  • 相关阅读:
    将字符串格式化为csv数据
    以RTMP的方式播放录制好的视频
    as3signals的使用介绍
    rootkit hook之[四] IDT Hook
    .net调试WEB程序时页面无法显示的原因分析及解决办法
    rootkit hook之[六] sysenter Hook
    CUDA初探:GPU的并行计算
    rootkit hook 之[五] IRP Hook全家福
    rootkit之[七]IAT Hook HybridHook之终极打造
    CUDA初探:CUDA的初始化
  • 原文地址:https://www.cnblogs.com/jjp816/p/15033287.html
Copyright © 2011-2022 走看看