Windows 远程桌面 Linux

注意:RHEL9系列(包括rhel)的版本在安装软件时会出现不成功的情况,这应该和 rhel 的默认源和订阅有关;

在 CentOS 和 CentOS Stream 系列不会出现这个问题,最小化安装和图形化安装(GUI)都可以配置

本次实验使用的是最小化安装,无图形界面

准备工作

  1. 配置网络,能上外网
  1. 配置 aliyun 的 epel 源,链接 www.aliyun.com ,搜索 epel
1
2
3
4
5
6
7
8
9
> 下载新repo 到/etc/yum.repos.d/【下面例子以CentOS Stream 9做演示】

- 安装epel配置包
yum install -y https://mirrors.aliyun.com/epel/epel-release-latest-8.noarch.rpm
#注意: 如果是centos 7,则直接安装epel-release就可以安装xrdp了,不需要替换epel源,否则会提示使用yum命令失败

- 将repo配置中的地址替换为阿里云镜像站地址
sed -i 's|^#baseurl=https://download.example/pub|baseurl=https://mirrors.aliyun.com|' /etc/yum.repos.d/epel*
sed -i 's|^metalink|#metalink|' /etc/yum.repos.d/epel*

安装 xrdp 和 xorgxrdp

Xrdp是一个开源工具,允许用户通过 Windows RDP 访问 Linux 远程桌面。除了 Windows RDP,xrdp 工具还接受来自其他 RDP 客户端的连接,如 FreeRDP、rdesktop 和 NeutrinoRDP。Xrdp 现在支持 TLS 安全层

xrdp 只是一个壳,提供一个远程连接的加密通道。

Xorg 是共享机器的资源。每次连接一个新用户,都会创建一个新的session,创建一个新的桌面。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
[root@localhost ~]# dnf -y install xrdp xorgxrdp

修改配置文件
[root@localhost ~]# vim /etc/xrdp/xrdp.ini
...
[Globals]
; xrdp.ini file version number
ini_version=1

; fork a new process for each incoming connection
fork=true

; ports to listen on, number alone means listen on all interfaces
; 0.0.0.0 or :: if ipv6 is configured
; space between multiple occurrences
; ALL specified interfaces must be UP when xrdp starts, otherwise xrdp will fail to start
;
; Examples:
; port=3389
; port=unix://./tmp/xrdp.socket
; port=tcp://.:3389 127.0.0.1:3389
; port=tcp://:3389 *:3389
; port=tcp://<any ipv4 format addr>:3389 192.168.1.1:3389
; port=tcp6://.:3389 ::1:3389
; port=tcp6://:3389 *:3389
; port=tcp6://{<any ipv6 format addr>}:3389 {FC00:0:0:0:0:0:0:1}:3389
; port=vsock://<cid>:<port>
port=3389 👈 【Global】下的port是远程连接桌面时开放的端口,windows远程连接必须开放3389

[Xorg] 👈 【xorg】默认是注释,不启用的;去掉'#',开放Xorg会话
name=Xorg
lib=libxup.so
username=ask
password=ask
ip=127.0.0.1
port=-1
code=20

#[Xvnc] 👈 【Xvnc】默认启用Xvnc会话,注释,不启用.
#name=Xvnc
#lib=libvnc.so
#username=ask
#password=ask
#ip=127.0.0.1
#port=-1

这里选择使用 Xorg 会话而不是 Xvnc,Xvnc 好像要和 tigerVNC 配合的。我没装 tigerVNC

  • 开放防火墙所在区域需要远程连入端口
1
2
3
4
5
6
7
8
9
10
[root@localhost ~]# firewall-cmd --get-default-zone
public

[root@localhost ~]# firewall-cmd --zone=public --add-port=3389/tcp --permanent
success

[root@localhost ~]# firewall-cmd --reload
success

# 如果需要配置公网IP连入的端口,则开放公网连接的端口即可
  • 重启 xrdp 服务,远程接入
1
[root@localhost ~]# systemctl restart xrdp
image-20221009105031756 image-20221009105259323
1
2
3
4
5
6
7
- 添加用户,设置密码
[root@localhost ~]# for i in {1..2}; do useradd stu$i; done
[root@localhost ~]# for i in {1..2}; do echo redhat | passwd --stdin stu$i; done
Changing password for user stu1.
passwd: all authentication tokens updated successfully.
Changing password for user stu2.
passwd: all authentication tokens updated successfully.
  • 此时远程登录用户是会直接退出会话的,因为我们是最小化安装,还没有桌面,无法进入远程界面
stu1

如果是安装了图形化界面的CentOS,此时就可以直接进入自带的 GNOME 桌面了

GNOME 是一个完全由自由软件组成的桌面环境

stu1-2

不过默认安装的GNOME桌面环境,在资源要求较高的情况下,会比较卡顿,这时可以安装openbox轻量级的图形桌面

安装 openbox

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
- 安装openbox轻巧窗口管理器(Openbox是运行于搭载X11的GNU/Linux上的轻巧窗口管理器)
[root@localhost ~]# dnf -y install openbox


- 将默认openbox的配置文件做备份
[root@localhost ~]# mv /etc/X11/xinit/Xsession /etc/X11/xinit/Xsession.bak

- 重新编写启动会话文件
[root@localhost ~]# vim /etc/X11/xinit/Xsession
#!/bin/bash
exec openbox-session 👈 开机执行Openbox桌面会话;一定要这么设置,否则是不会进入openbox桌面

- 备份openbox默认xml文件
[root@localhost ~]# mv /etc/xdg/openbox/menu.xml /etc/xdg/openbox/menu.xml.bak

- 自定义xml文件
[root@localhost ~]# vim /etc/xdg/openbox/menu.xml
<?xml version="1.0" encoding="UTF-8"?>

<openbox_menu xmlns="http://openbox.org/3.4/menu">
<menu id="root-menu" label="Openbox 3">
<separator label="Tools"/>
<item label="Terminal">
<action name="Execute">
<command>xfce4-terminal</command>
</action>
</item>
<item label="VNC Viewer">
<action name="Execute">
<command>vncviewer</command>
</action>
</item>
<separator label="Others"/>
<item label="Reconfigure">
<action name="Reconfigure" />
</item>
<item label="Exit">
<action name="Exit">
<prompt>yes</prompt>
</action>
</item>
<separator/>
<item label="Log Out">
<action name="SessionLogout">
<prompt>yes</prompt>
</action>
</item>
</menu>

</openbox_menu>

- 重启xrdp服务
[root@localhost ~]# systemctl restart xrdp

此时可以顺利进入界面了,不过进入后打开终端会提示没有文件或目录执行vncviewer子进程

fail to execute

所以我们还需安装其他的组件,以支持终端操作配置

安装其它组件

xfce4-terminal 是一个轻量级和易于使用的终端模拟器应用程序

Tint2 是一个轻量级面板和任务栏,它可以为任何窗口管理器提供一致的体验

1
2
3
4
5
6
7
8
9
10
11
12
- 安装xfce4-terminal
[root@localhost ~]# dnf -y install xfce4-terminal

- 安装tint2.x86_64
# 注意: tint2软件包在高版本的 CentOS Stream9 下无法安装,这是版本过新的问题,暂时无法解决; centos 7 可以安装,centos 8 没试过
'不过不影响,只需xfce-terminal即可顺利使用终端了'

- 重启xrdp服务
[root@localhost ~]# systemctl restart xrdp

- 因为是最小化安装,默认是没有firefox浏览器,手动安装即可!
[root@localhost ~]# dnf -y install firefox
success