【Ubuntu】Windows远程Ubuntu系统

步骤


  1. 开启ssh服务并开放22端口
  2. 关闭防火墙ufw或iptables ;或者将远程端口添加到入站与出站规则
  3. 安装xrdp并将xrdp用户添加到ssl-cert用户组
  4. 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服务

  1. 安装openssh服务查看服务有没有开启
bash 复制代码
sudo apt-get install openssh-server
  1. 查看服务有没有开启
bash 复制代码
sudo ps -e | grep ssh
  1. 如果没有就开启,启动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用户添加到这个用户组:

  1. 将xrdp 添加到 ssl-cert用户组
bash 复制代码
sudo adduser xrdp ssl-cert 
  1. 重启xrdp

    sudo systemctl restart xrdp

3. 远程过程中的问题

3.1 黑屏问题

  1. 使用vim打开startwm.sh配置文件
bash 复制代码
sudo vim /etc/xrdp/startwm.sh
  1. 命令模式:键入指令i 进入 -- 插入 -- 模式
  2. -- 插入 -- 模式:在下图所示位置添加如下内容
sh 复制代码
...
unset DBUS_SESSION_BUS_ADDRESS

unset XDG_RUNTIME_DIR
...
  1. 使用Esc指令退出 -- 插入 -- 模式,进入 命令模式。
  2. 命令模式:键入指令:wq!

保存并退出

vim 复制代码
:wq!

不保存并退出

vim 复制代码
:q!
相关推荐
浩浩测试一下3 小时前
Linux 底层知识点 1
linux·运维·服务器
Escalating_xu3 小时前
【Linux 网络编程】TCP 跨平台实战:用 Windows 客户端访问 Linux 服务器
linux·服务器·网络
忆挽篱笙歌4 小时前
环境变量,本地变量
linux·运维·服务器
JANGHIGH5 小时前
基于ADE20K数据集的SETR模型训练
ubuntu
Vex2une6 小时前
Docker Desktop WSL2后端:2026年性能调优与避坑实战指南
windows·docker·desktop·gpu容器·容器开发·virtiofs·buildkit
丰色木夕6 小时前
Ubuntu22.04下源码编译安装USD-Brep
c++·ubuntu·nvidia·usd-brep
吹什么轩7 小时前
linux系统复习:僵尸进程与孤儿进程
linux·运维·php
殷忆枫7 小时前
告别依赖地狱!在 Ubuntu 上用 Docker 极速部署 Home Assistant 与 MQTT,并接入 Siri 与嵌入式 C 终端
linux·ubuntu·docker
钱栈up7 小时前
搜狗中文模式打不出顿号?在 Windows 沙箱里探测输入法配置的踩坑实录
windows
第404号工位7 小时前
手机到底有没有偷听我们?我抓包了 72 小时,抓到了真凶
linux·人工智能·架构