步骤
- 开启
ssh
服务并开放22
端口 - 关闭防火墙
ufw
或iptables
;或者将远程端口添加到入站与出站规则 - 安装
xrdp
并将xrdp
用户添加到ssl-cert
用户组 - mstsc 远程,输入账号密码
1、开启ssh服务
1.1. 查看ssh是否已经开启
bash
sudo ps -e | grep ssh
如果最后返回是sshd
,证明ssh
已经开启,跳到第四步
632 ? 00:00:00 sshd
20915 ? 00:00:00 ssh-agent
1.2. 开启ssh服务
如果没有显示,试着开启ssh服务
bash
sudo /etc/init.d/ssh start
如果返回的是命令未找到,证明未安装ssh服务
Starting ssh (via systemctl): ssh.service.
1.3 安装openssh服务
- 安装openssh服务查看服务有没有开启
bash
sudo apt-get install openssh-server
- 查看服务有没有开启
bash
sudo ps -e | grep ssh
- 如果没有就开启,启动openssh服务
bash
sudo /etc/init.d/ssh start
1.4 检查ssh默认开放22端口
检查防火墙有没有开放20端口(ssh默认开放22端口,如果修改可看第五步)
1.41 使用 netstat 进行查看
bash
netstat -an | grep 22
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp6 0 0 :::22 :::* LISTEN
unix 2 [ ACC ] 流 LISTENING 242254 @/tmp/dbus-r4rAjh2Fcv
unix 2 [ ACC ] 流 LISTENING 18822 /run/systemd/private
unix 2 [ ACC ] 流 LISTENING 242279 /home/signway/.pcsc10/pcscd.comm
unix 2 [ ] 流 已连接 42234 @/tmp/dbus-XLRsuygY
unix 3 [ ] 流 已连接 234122 @/tmp/dbus-EKhrJLaYQU
unix 3 [ ] 流 已连接 234227
unix 3 [ ] 流 已连接 242322 @/tmp/.X11-unix/X10
unix 3 [ ] 流 已连接 235224 @/tmp/dbus-EKhrJLaYQU
unix 3 [ ] 流 已连接 179221 /run/containerd/containerd.sock
unix 3 [ ] 流 已连接 242255
unix 3 [ ] 流 已连接 243227 @/tmp/dbus-LY2CUzKESO
unix 3 [ ] 流 已连接 243229
unix 3 [ ] 流 已连接 241322 /run/systemd/journal/stdout
unix 3 [ ] 流 已连接 242230
unix 3 [ ] 流 已连接 42253 /run/systemd/journal/stdout
unix 3 [ ] 流 已连接 243922
unix 3 [ ] 流 已连接 243422
unix 3 [ ] 流 已连接 234228
unix 3 [ ] 流 已连接 35022 /run/dbus/system_bus_socket
unix 3 [ ] 流 已连接 240322 @/tmp/dbus-LY2CUzKESO
unix 3 [ ] 流 已连接 36922 /run/systemd/journal/stdout
unix 3 [ ] 流 已连接 242232 /run/xrdp/sockdir/xrdp_chansrv_socket_10
unix 3 [ ] 流 已连接 234222 @/tmp/dbus-EKhrJLaYQU
unix 3 [ ] 流 已连接 35223 /run/systemd/journal/stdout
1.4.2 使用 ufw 查看
bash
ufw status
bash: ufw:未找到命令
1.4.3 安装 ufw
如果查看bash: ufw:未找到命令
,需要安装
bash
sudo apt-get install ufw
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
下列【新】软件包将被安装:
ufw
升级了 0 个软件包,新安装了 1 个软件包, 要卸载 0 个软件包,有 101 个软件包未被升级。
需要下载 148 kB 的归档。
解压缩后会消耗 849 kB 的额外空间。
获取:1 http://mirrors.aliyun.com/ubuntu-ports focal-updates/main arm64 ufw all 0.36-6ubuntu1.1 [148 kB]
已下载 148 kB,耗时 0秒 (626 kB/s)
正在预设定软件包 ...
正在选中未选择的软件包 ufw。
(正在读取数据库 ... 系统当前共安装有 132750 个文件和目录。)
准备解压 .../ufw_0.36-6ubuntu1.1_all.deb ...
正在解压 ufw (0.36-6ubuntu1.1) ...
正在设置 ufw (0.36-6ubuntu1.1) ...
Creating config file /etc/ufw/before.rules with new version
Creating config file /etc/ufw/before6.rules with new version
Creating config file /etc/ufw/after.rules with new version
Creating config file /etc/ufw/after6.rules with new version
Created symlink /etc/systemd/system/multi-user.target.wants/ufw.service → /lib/systemd/system/ufw.service.
正在处理用于 systemd (245.4-4ubuntu3.22) 的触发器 ...
正在处理用于 rsyslog (8.2001.0-1ubuntu1.3) 的触发器 ...
1.4.4 使用 ufw 查看
bash
ufw status
WARN: uid 是 0 但是 "/etc/default" 属于 1000
WARN: uid 是 0 但是 "/etc" 属于 1000
WARN: uid 是 0 但是 "/lib" 属于 1000
WARN: uid 是 0 但是 "/usr/sbin" 属于 1000
WARN: uid 是 0 但是 "/usr" 属于 1000
状态:不活动
- 状态:不活动 - 防火墙已关闭
- 状态:
1.4.5 启用防火墙
bash
sudo ufw enable
bash
[sudo] signway 的密码:
WARN: uid 是 0 但是 "/etc/default" 属于 1000
WARN: uid 是 0 但是 "/etc" 属于 1000
WARN: uid 是 0 但是 "/lib" 属于 1000
WARN: uid 是 0 但是 "/usr/sbin" 属于 1000
WARN: uid 是 0 但是 "/usr" 属于 1000
ERROR: problem running ufw-init
iptables-restore v1.8.4 (legacy): Couldn't load match `limit':No such file or directory
Error occurred at line: 63
Try `iptables-restore -h' or 'iptables-restore --help' for more information.
iptables-restore v1.8.4 (legacy): Couldn't load match`limit':No such file or directory
Error occurred at line: 8
Try `iptables-restore -h' or 'iptables-restore --help' for more information.
Problem loading ipv6 (skipping)
Problem running '/etc/ufw/before.rules'
Problem running '/etc/ufw/user.rules'
ufw运行报错时
一、使用 iptables 替代 ufw 的功能
在大多数情况下,最好不要同时运行 ufw
和 iptables-restore
。这是因为 ufw
本身实际上是一个基于 iptables
的前端工具,用于简化 iptables
的配置过程。当你启用 ufw 时,它会自动配置 iptables
规则。
如果你手动使用 iptables-restore 来加载自定义的
iptables规则,而且同时又启用了
ufw` ,可能会导致规则冲突和意外行为。因此,最好的做法是选择其中一种方式来管理防火墙规则,而不是同时使用两者。
如果你更喜欢手动配置 iptables
规则,那么你可以停用 ufw
并直接使用 iptables
和 iptables-restore
来管理防火墙规则。反之,如果你喜欢使用 ufw
的简单性和易用性,那就不需要直接操作 iptables
。
无论你选择哪种方式,确保在配置防火墙规则时谨慎行事,并且经常测试以确保规则按预期生效。
二、可以尝试 - 内核添加配置
1.4.6 使用 ufw 查看
bash
sudo ufw status
bash
WARN: uid 是 0 但是 "/etc/default" 属于 1000
WARN: uid 是 0 但是 "/etc" 属于 1000
WARN: uid 是 0 但是 "/lib" 属于 1000
WARN: uid 是 0 但是 "/usr/sbin" 属于 1000
WARN: uid 是 0 但是 "/usr" 属于 1000
ERROR: 运行时出现问题 ip6tables
注意:ci
1.4.7 关闭防火墙
bash
sudo ufw disable
WARN: uid 是 0 但是 "/etc/default" 属于 1000
WARN: uid 是 0 但是 "/etc" 属于 1000
WARN: uid 是 0 但是 "/lib" 属于 1000
WARN: uid 是 0 但是 "/usr/sbin" 属于 1000
WARN: uid 是 0 但是 "/usr" 属于 1000
防火墙在系统启动时自动禁用
1.4.8 如果没有的话,开放22端口
bash
sudo ufw allow 22
WARN: uid 是 0 但是 “/etc/default” 属于 1000
WARN: uid 是 0 但是 “/etc” 属于 1000
WARN: uid 是 0 但是 “/lib” 属于 1000
WARN: uid 是 0 但是 “/usr/sbin” 属于 1000
WARN: uid 是 0 但是 “/usr” 属于 1000
ERROR: initcaps
[Errno 2] modprobe: FATAL: Module ip6_tables not found in directory /lib/modules/5.10.160
ip6tables v1.8.4 (legacy): can't initialize ip6tables table `filter': Table does not exist (do you need to insmod?)
Perhaps ip6tables or your kernel needs to be upgraded.
1.4.9 修改ssh端口(可跳过)
bash
sudo vi /etc/ssh/sshd_config
1.4.10 ssh重启
bash
sudo service sshd restart
1.4.11 防火墙生效并开机启动
bash
sudo ufw enable
2、远程 xrdp
2.1 安装
bash
sudo apt install xrdp
2.2 查看xrdp运行状态
bash
sudo systemctl status xrdp
● xrdp.service - xrdp daemon
Loaded: loaded (/lib/systemd/system/xrdp.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2023-11-14 15:24:29 CST; 19h ago
Docs: man:xrdp(8)
man:xrdp.ini(5)
Main PID: 702 (xrdp)
Tasks: 2 (limit: 4522)
Memory: 22.2M
CGroup: /system.slice/xrdp.service
├─ 702 /usr/sbin/xrdp
└─20550 /usr/sbin/xrdp
11月 15 10:12:38 RK3588 xrdp[20550]: (20550)(548425859088)[DEBUG] xrdp_wm_log_msg: connecting to sesman ip>
11月 15 10:12:38 RK3588 xrdp[20550]: (20550)(548425859088)[INFO ] xrdp_wm_log_msg: sesman connect ok
11月 15 10:12:38 RK3588 xrdp[20550]: (20550)(548425859088)[DEBUG] xrdp_wm_log_msg: sending login info to s>
11月 15 10:12:38 RK3588 xrdp[20550]: (20550)(548425859088)[DEBUG] return value from xrdp_mm_connect 0
11月 15 10:12:38 RK3588 xrdp[20550]: (20550)(548425859088)[INFO ] xrdp_wm_log_msg: login successful for di>
11月 15 10:12:38 RK3588 xrdp[20550]: (20550)(548425859088)[DEBUG] xrdp_wm_log_msg: started connecting
11月 15 10:12:38 RK3588 xrdp[20550]: (20550)(548425859088)[INFO ] lib_mod_log_peer: xrdp_pid=20550 connect>
11月 15 10:12:38 RK3588 xrdp[20550]: (20550)(548425859088)[DEBUG] xrdp_wm_log_msg: connected ok
11月 15 10:12:38 RK3588 xrdp[20550]: (20550)(548425859088)[DEBUG] xrdp_mm_connect_chansrv: chansrv connect>
11月 15 10:12:38 RK3588 xrdp[20550]: (20550)(548425859088)[DEBUG] Closed socket 18 (AF_INET6 ::1 port 4023>
2.3 设置xrdp开机自动启动
bash
sudo systemctl enable xrdp
Synchronizing state of xrdp.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable xrdp
2.4 将xrdp用户添加到ssl-cert用户组
默认情况下,xrdp 使用/etc/ssl/private/ssl-cert-snakeoil.key,它仅仅对ssl-cert用户组成语可读,所以需要运行下面的命令,将xrdp用户添加到这个用户组:
- 将xrdp 添加到 ssl-cert用户组
bash
sudo adduser xrdp ssl-cert
-
重启xrdp
sudo systemctl restart xrdp
3. 远程过程中的问题
3.1 黑屏问题
- 使用vim打开
startwm.sh
配置文件
bash
sudo vim /etc/xrdp/startwm.sh
命令模式
:键入指令i 进入-- 插入 --
模式-- 插入 --
模式:在下图所示位置添加如下内容
sh
...
unset DBUS_SESSION_BUS_ADDRESS
unset XDG_RUNTIME_DIR
...
- 使用Esc指令退出
-- 插入 --
模式,进入命令模式
。 命令模式
:键入指令:wq!
保存并退出
vim
:wq!
不保存并退出
vim
:q!