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连接成功。
[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值,其中的
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远程桌面连接