百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术分析 > 正文

从0开始学习KVM-KVM学习笔记(6)- CentOS远程桌面连接

liebian365 2025-03-26 13:48 8 浏览 0 评论

CentOS



远程桌面连接

CentOS 系统上配置远程桌面连接有多种方法,其中最常用的是通过 xrdp或 vnc 来实现。

安装xrdr实现CentOS远程桌面

安装xrdp

  • 安装 epel 库
sudo yum install -y epel-release
  • 安装 xrdp
sudo yum install -y xrdp
  • 安装字体
sudo yum install -y xorg-x11-fonts* # 为了确保远程桌面连接可以正常显示字符,安装 xorg-x11-fonts

配置xrdp

  • 配置xrdp防火墙
sudo firewall-cmd --zone=public --add-port=3389/tcp --permanent # 防火墙打开 TCP 端口 3389(xrdp 的默认端口)
sudo firewall-cmd --reload # 重新加载防火墙
  • 配置 xrdp.ini

编辑 xrdp 的配置文件,可以调整一些设置,如最大连接数等

sudo vim /etc/xrdp/xrdp.ini
  • 在 [xrdp] 部分,可以调整以下设置(一般默认即可):

max_connections: 设置最大连接数。

port: 设置 xrdp 服务的端口(默认为 3389)。

  • 启动 xrdp 服务
sudo systemctl start xrdp # 启动xrdp服务
sudo systemctl status xrdp # 查看xrdp服务状态
sudo systemctl enable xrdp # 开机启动xrdp服务

连接xrdp

  • 在 Windows 上使用远程桌面连接

打开 Windows 的远程桌面连接工具,输入 CentOS 服务器的 IP 地址,即可进行连接。

  • 在 Linux 或 Mac 的远程桌面客户端

对于 Linux 或 Mac 用户,可以使用如 Royal TSX、Remmina、rdesktop等远程桌面客户端。

xfdp远程桌面连接


安装vncserver实现CentOS远程桌面

安装VNC

VNC(Virtual Network Computing)是一款基于Linux操作系统的开源远程控制、图形化登录工具软件,允许用户通过网络远程控制另一台计算机的桌面。VNC包括以下四个命令:vncserver、vncviewer、vncpasswd、vncconnectVNC(Virtual Network Computing)是一款基于Linux操作系统的开源远程控制、图形化登录工具软件,允许用户通过网络远程控制另一台计算机的桌面。VNC包括以下四个命令:vncserver、vncviewer、vncpasswd、vncconnect

安装 tigervnc-server

sudo yum install -y tigervnc-server   # 安装tigernvc-server
rpm -q tigervnc-server    # 查看版本
tigervnc-server-1.8.0-33.el7_9.x86_64

配置VNC

vnc配置很简单,运行vncserver :桌面号, 开放防火墙即可。需要说明的是,vnc默认端口为5900,每开启一个vnc服务(:桌面号),端口+1,从5900+1开始,逐渐递增。

另外,还需要注意使用vnc远程连接的用户,比如,我想要使用root用户登录vnc,那就切换到su root用户下进行vnc的配置,我想要使用普通用户USER(我当前登录的用户xiaoqiang就是普通用户),就在当前用户xiaoqiang下进行vnc的配置。当然,也可以新建一个用户,作为专门的vnc用户来使用,如新一个vncuser,并切换su vncuser到该目录下配置nvc。

配置vnc步骤如下:

  • 设置vnc密码 - vncpasswd

我的当前用户为:xiaoqiang,口令会被加密保存在用户主目录下的.vnc子目录中的passwd文件里。

[xiaoqiang@kvm-server ~]$ vncpasswd # 为当前用户设置vnc密码
Password: # 输入密码 (不可见)
Verify: # 再次输入密码 (不可见)
Would you like to enter a view-only password (y/n)? n # 是否要再输入一个只有观看权限而被禁止操作远程桌面的密码,回答否,输入`n`
A view-only password is not used
[xiaoqiang@kvm-server ~]$
  • 启动vnc服务 - vncserver

使用vncserver命令启动VNC服务。命令格式:"vncserver :桌面号",eg: vncserver :1。vnc默认端口为5900,桌面号为1,那么这个vnc服务的端口为:5900+1,也就是5901端口。下一步需要在防火墙里打开5901端口,vnc客户端才通连接上。操作如下:

[xiaoqiang@kvm-server ~]$ vncserver :1 # 启动vnc服务,桌面号为1,端口号为:5900+1=5901

New 'kvm-server:1 (xiaoqiang)' desktop is kvm-server:1

Creating default startup script /home/xiaoqiang/.vnc/xstartup
Creating default config /home/xiaoqiang/.vnc/config
Starting applications specified in /home/xiaoqiang/.vnc/xstartup
Log file is /home/xiaoqiang/.vnc/kvm-server:1.log
[xiaoqiang@kvm-server ~]
  • 列出正在运行的vnc桌面/会话
[xiaoqiang@kvm-server ~]$ vncserver -list
TigerVNC server sessions:
X DISPLAY # PROCESS ID
:1 11488
[xiaoqiang@kvm-server ~]$
  • 开启防火墙端口
sudo firewall-cmd --zone=public --add-port=5901/tcp --permanent # 开放 VNC 服务端口5901
[sudo] password for xiaoqiang: # 输入密码
success # 5901端口开放成功
sudo firewall-cmd --reload # 重载防火墙
sudo firewall-cmd --list-all # 查看防火墙开放的端口

临时连接-远程连接vnc服务

使用 Royal TSX、TightVNC、VNC Viewer 等远程桌面客户端连接服务器,用户名为xiaoqiang,密码为第一步vncpassd所设置的密码,端口是5901。如图VNC连接成功。

  • 这种连接也叫临时连接,当关闭vncserver服务后,连接就断开了。关闭vnc服务 - vncserver -kill :桌面号
  • [xiaoqiang@kvm-server ~]$ vncserver -list   # 列出所有打开的vnc远程桌面
    TigerVNC server sessions:
    X DISPLAY # PROCESS ID
    :1    11488
    
    [xiaoqiang@kvm-server ~]$ vncserver -kill :1    # 关闭vnc远程桌面连接
    Killing Xvnc process ID 11488
    [xiaoqiang@kvm-server ~]$ 

    临时连接适用于快速访问桌面环境,无需复杂配置。它通常在用户会话中启动,并在会话结束时自动关闭。 VNC持久化 服务可以确保系统启动时自动运行 VNC Server,并在需要时方便管理。

    • 临时连接:适合快速访问桌面环境,无需复杂配置,适合临时任务。
    • 持久化服务:适合需要长期运行的场景,自动启动,可靠性高,但需要额外配置。

    根据你的需求选择合适的方案。如果只是偶尔需要远程访问桌面,临时连接是一个快速且安全的选择。如果需要长期稳定的远程访问,建议配置持久化的 VNC 服务。接下来我们来看看怎么配置持久化VNC服务。

    vnc服务持久化服务-远程连接

    • vnc持久化服务

    配置vnc持久化服务时,root用户的配置和普通用的配置,稍有不同,这里我们两种帐户的vnc服务都来配置下。

    [xiaoqiang@kvm-server ~]$ su # 切换到root
    Password: # 输入root密码
    [root@kvm-server xiaoqiang]# vncserver :1 # 运行vnc服务,桌面号为1,
    
    You will require a password to access your desktops.
    
    Password: # 因为之前没有为root设置vnc服务密码,这里vnc要求设置密码,输入密码
    Verify: # 再次输入密码
    Would you like to enter a view-only password (y/n)? n   # 是否要再输入一个只有观看权限而被禁止操作远程桌面的密码,回答否,输入`n`
    A view-only password is not used
    
    # vnc服务启动成功,桌面号为1,到这里就可以进行临时vnc连接了
    New 'kvm-server:1 (xiaoqiang)' desktop is kvm-server:1
    
    Creating default startup script /root/.vnc/xstartup
    Creating default config /root/.vnc/config
    Starting applications specified in /root/.vnc/xstartup
    Log file is /root/.vnc/kvm-server:1.log
    
    [root@kvm-server xiaoqiang]# vncserver -list # 列出vnc服务
    TigerVNC server sessions:
    X DISPLAY # PROCESS ID
    :1 761
    
    [root@kvm-server xiaoqiang]# vncserver -kill :1 # 关闭vnc服务
    Killing Xvnc process ID 761
    [root@kvm-server xiaoqiang]#
    • 复制配置文件(vnc服务模块),需要开启几个vnc服务/远程桌面,就复制几个配置文件,如:
    sudo cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service # 第一个vnc桌面配置文件
    sudo cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:2.service # 第二个vnc桌面配置文件
    • 修改配置文件,原配置文件如下(带#号的行为注释或说明,这里省略了,这里添加了#号后的说明/注释):
    [Unit] # #启动顺序及依赖关系
    Description=Remote desktop service (VNC) # 描述
    After=syslog.target network.target # After表示,在日志功能和网功能启动后,才启动VNC服务
    
    [Service]
    Type=simple # simple(默认值):ExecStart字段启动的进程为主进程
    
    # Clean any existing files in /tmp/.X11-unix environment
    ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :' # 启动vnc服务之前执行的命令
    ExecStart=/usr/bin/vncserver_wrapper  %i # 启动vnc服务的命令
    ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :' # 关闭vnc服务的命令
    
    [Install]
    WantedBy=multi-user.target # WantedBy字段:表示该服务所在的 Target。
    • 修改配置文件
      sudo vim /etc/systemd/system/vncserver@:1.service   # 修改配置文件1,给root用户远程使用

    在 [Service] 字段,Type值修改为:forking

    [Service]
    Type=forking    # vnc服务启动类型为forking
    #simple(默认值):ExecStart字段启动的进程为主进程
    #forking:ExecStart字段将以fork()方式启动,此时父进程将会退出,子进程将成为主进程
    #oneshot:类似于simple,但只执行一次,Systemd 会等它执行完,才启动其他服务
    #dbus:类似于simple,但会等待 D-Bus 信号后启动
    #notify:类似于simple,启动结束后会发出通知信号,然后 Systemd 再启动其他服务
    #idle:类似于simple,但是要等到其他任务都执行完,才会启动该服务。一种使用场合是为让该服务的输出,不与其他服务的输出相混合

    在 [Service] 字段,ExecStart值,其中的替换为root用户名:

    ExecStart=/usr/bin/vncserver_wrapper root %i

    在 [Service] 字段,添加PIDFile,这里是root用户

    PIDFile=/root/.vnc/%H%i.pid

    :wq 保存关闭文件。

    完整修改后的root用户vnc配置文件:

    [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 root -c "/usr/bin/vncserver %i"
    ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
    PIDFile=/root/.vnc/%H%i.pid
    
    [Install]
    WantedBy=multi-user.target


    修改用户xiaoqiang的vnc配置文件:

    sudo vim /etc/systemd/system/vncserver@:2.service

    完整修改后的xiaoqiang用户vnc配置文件:

    [Unit]
    Description=Remote desktop service (VNC)
    After=syslog.target network.target
    
    [Service]
    Type=forking
    User=xiaoqiang
    Group=xiaoqiang
    WorkingDirectory=/home/xiaoqiang
    ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
    ExecStart=/usr/bin/vncserver %i
    ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
    PIDFile=/home/xiaoqiang/.vnc/%H%i.pid
    
    [Install]
    WantedBy=multi-user.target
    • 配置完成后,重启systemd
    sudo systemctl daemon-reload # 重新加载systemd配置
    • 开启vnc服务
    sudo systemctl start vncserver@:1.service
    sudo systemctl start vncserver@:2.service
    • 配置VNC防火墙
    sudo firewall-cmd --zone=public --add-port=5901/tcp --permanent # 开放 VNC 服务端口(root用户)
    sudo firewall-cmd --zone=public --add-port=5902/tcp --permanent # 开放 VNC 服务端口(xiaoqiang用户)
    
    sudo firewall-cmd --reload # 重载防火墙
    sudo firewall-cmd --list-all # 查看防火开放的端口
    • 启动vnc服务
    
    sudo systemctl start vncserver@:1.service # 启动vnc服务vncserver@:1.service
    sudo systemctl start vncserver@:2.service # 启动vnc服务vncserver@:2.service
    sudo systemctl status vncserver@:1.service # 查看vncserver@:1.service状态
    sudo systemctl status vncserver@:2.service # 查看vncserver@:2.service状态
    
    sudo systemctl enable vncserver@:1.service # 设置vncserver@:1.service服务开机启动
    sudo systemctl enable vncserver@:2.service # 设置vncserver@:2.service服务开机启动
    
    sudo ps -ef | grep vnc # 检查vnc进程
    sudo netstat -lnpt | grep Xvnc # 查看服务监听的端口
    [root@kvm-server system]# sudo netstat -lnpt | grep Xvnc
    tcp 0 0 0.0.0.0:5901 0.0.0.0:* LISTEN 17359/Xvnc 
    tcp 0 0 0.0.0.0:5902 0.0.0.0:* LISTEN 18140/Xvnc 
    tcp 0 0 0.0.0.0:6001 0.0.0.0:* LISTEN 17359/Xvnc 
    tcp 0 0 0.0.0.0:6002 0.0.0.0:* LISTEN 18140/Xvnc 
    tcp 0 0 127.0.0.1:5910 0.0.0.0:* LISTEN 4260/Xvnc 
    tcp6 0 0 :::5901 :::* LISTEN 17359/Xvnc 
    tcp6 0 0 :::5902 :::* LISTEN 18140/Xvnc 
    tcp6 0 0 :::6001 :::* LISTEN 17359/Xvnc 
    tcp6 0 0 :::6002 :::* LISTEN 18140/Xvnc 
    tcp6 0 0 ::1:5910 :::* LISTEN 4260/Xvnc

    连接到 CentOS 远程桌面

    • 在 Windows 上使用远程桌面连接
    • 打开 Windows 的远程桌面连接工具,或是使用MobaXterm,输入 CentOS 服务器的 IP 地址端口号,即可进行连接。
    • 在 Linux 或 Mac 的远程桌面客户端
    • 对于 Linux 或 Mac 用户,可以使用如 Royal TSX、TightVNC、VNC Viewer 等远程桌面客户端。

    vnc远程桌面连接

    相关推荐

    go语言也可以做gui,go-fltk让你做出c++级别的桌面应用

    大家都知道go语言生态并没有什么好的gui开发框架,“能用”的一个手就能数的清,好用的就更是少之又少。今天为大家推荐一个go的gui库go-fltk。它是通过cgo调用了c++的fltk库,性能非常高...

    旧电脑的首选系统:TinyCore!体积小+精简+速度极快,你敢安装吗

    这几天老毛桃整理了几个微型Linux发行版,准备分享给大家。要知道可供我们日常使用的Linux发行版有很多,但其中的一些发行版经常会被大家忽视。其实这些微型Linux发行版是一种非常强大的创新:在一台...

    codeblocks和VS2019下的fltk使用中文

    在fltk中用中文有点问题。英文是这样。中文就成这个样子了。我查了查资料,说用UTF-8编码就行了。edit->Fileencoding->UTF-8然后保存文件。看下下边的编码指示确...

    FLTK(Fast Light Toolkit)一个轻量级的跨平台Python GUI库

    FLTK(FastLightToolkit)是一个轻量级的跨平台GUI库,特别适用于开发需要快速、高效且简单界面的应用程序。本文将介绍Python中的FLTK库,包括其特性、应用场景以及如何通过代...

    中科院开源 RISC-V 处理器“香山”流片,已成功运行 Linux

    IT之家1月29日消息,去年6月份,中科院大学教授、中科院计算所研究员包云岗,发布了开源高性能RISC-V处理器核心——香山。近日,包云岗在社交平台晒出图片,香山芯片已流片,回片后...

    Linux 5.13内核有望合并对苹果M1处理器支持的初步代码

    预计Linux5.13将初步支持苹果SiliconM1处理器,不过完整的支持工作可能还需要几年时间才能完全完成。虽然Linux已经可以在苹果SiliconM1上运行,但这需要通过一系列的补丁才能...

    Ubuntu系统下COM口测试教程(ubuntu port)

    1、在待测试的板上下载minicom,下载minicom有两种方法:方法一:在Ubuntu软件中心里面搜索下载方法二:按“Ctrl+Alt+T”打开终端,打开终端后输入“sudosu”回车;在下...

    湖北嵌入式软件工程师培训怎么选,让自己脱颖而出

    很多年轻人毕业即失业、面试总是不如意、薪酬不满意、在家躺平。“就业难”该如何应对,参加培训是否能改变自己的职业走向,在湖北,有哪些嵌入式软件工程师培训怎么选值得推荐?粤嵌科技在嵌入式培训领域有十几年经...

    新阁上位机开发---10年工程师的Modbus总结

    前言我算了一下,今年是我跟Modbus相识的第10年,从最开始的简单应用到协议了解,从协议开发到协议讲解,这个陪伴了10年的协议,它一直没变,变的只是我对它的理解和认识。我一直认为Modbus协议的存...

    创建你的第一个可运行的嵌入式Linux系统-5

    @ZHangZMo在MicrochipBuildroot中配置QT5选择Graphic配置文件增加QT5的配置修改根文件系统支持QT5修改output/target/etc/profile配置文件...

    如何在Linux下给zigbee CC2530实现上位机

    0、前言网友提问如下:粉丝提问项目框架汇总下这个网友的问题,其实就是实现一个网关程序,内容分为几块:下位机,通过串口与上位机相连;下位机要能够接收上位机下发的命令,并解析这些命令;下位机能够根据这些命...

    Python实现串口助手 - 03串口功能实现

     串口调试助手是最核心的当然是串口数据收发与显示的功能,pzh-py-com借助的是pySerial库实现串口收发功能,今天痞子衡为大家介绍pySerial是如何在pzh-py-com发挥功能的。一、...

    为什么选择UART(串口)作为调试接口,而不是I2C、SPI等其他接口

    UART(通用异步收发传输器)通常被选作调试接口有以下几个原因:简单性:协议简单:UART的协议非常简单,只需设置波特率、数据位、停止位和校验位就可以进行通信。相比之下,I2C和SPI需要处理更多的通...

    同一个类,不同代码,Qt 串口类QSerialPort 与各种外设通讯处理

    串口通讯在各种外设通讯中是常见接口,因为各种嵌入式CPU中串口标配,工业控制中如果不够还通过各种串口芯片进行扩展。比如spi接口的W25Q128FV.对于软件而言,因为驱动接口固定,软件也相对好写,因...

    嵌入式linux为什么可以通过PC上的串口去执行命令?

    1、uboot(负责初始化基本硬bai件,如串口,网卡,usb口等,然du后引导系统zhi运行)2、linux系统(真正的操作系统)3、你的应用程序(基于操作系统的软件应用)当你开发板上电时,u...

    取消回复欢迎 发表评论: