当前位置: 首页 > news >正文

通过ssh端口反向通道建立并实现linux系统的xrdp以及web访问

Content

  • 1 问题描述
  • 2 原因分析
  • 3 解决办法
    • 3.1 安装`x11`以及`gnome`桌面环境
      • 查看是否安装`x11`
      • 否则使用下面指令安装`x11`组件
      • 查看是否安装`gnome`
      • 否则使用下面指令安装`gnome`桌面环境
    • 3.2 安装`xrdp`
      • 使用下面指令安装`xrdp`(如果安装了则跳过)
      • 启动`xrdp`服务
    • 3.3 远程服务器`ssh`服务配置
      • 编辑`ssh`配置文件:
      • 修改以下内容为`yes`
      • 重启`ssh`服务
    • 3.4 建立反向`ssh`隧道并验证
      • 在`cmd`窗口中建立反向隧道:
      • 打开`MobaXterm`使用`RDP`工具验证
      • 输入密码
    • 3.5 `linux`桌面环境下启动浏览器访问`web`服务即可

1 问题描述

在服务器(以ubuntu为例)内部启动了web服务,但是无法通过网页访问服务器中的web服务,其中服务器的配置如下:

  1. linux服务器目前只开放了ssh端口,只能通过ssh访问
  2. linux服务器ip地址为内网地址,其中ssh的默认端口(22)被映射到交换机或者其他设备的端口
    例如当前服务器可以通过以下指令连接:
ssh root@210.40.56.82 -p 10022 

但是服务器内部显示ip192.168.10.23(内网ip):
在这里插入图片描述
ssh中并未开放10022端口:

  • 使用lsof -i :10022指令查看10022端口占用情况(输出为空)
  • 使用lsof -i :22指令查看22端口占用情况(ssh服务正在监听)
    在这里插入图片描述

2 原因分析

目标远程服务器中均看不到ssh连接中的210.40.56.82地址以及10022端口信息,说明

  • 210.40.56.82 可能是远程服务器的公共 IP 地址,用于从外部网络访问目标远程服务器;
  • 远程服务器位于具有网络地址转换NAT功能的路由器或防火墙后面,210.40.56.8210022 端口可能被配置为映射到内部网络中的 192.168.10.23 的22端口

这样与远程服务器之间的网络通信方式为:
当外部请求到达 210.40.56.82 的 10022 端口时,路由器或防火墙会将流量转发到 192.168.10.23 的22端口

3 解决办法

通过上述分析得出,如果要访问目标服务器上面某个端口启动的web服务,直接通过http://210.40.56.82:端口号是无法访问到的,因为中间节点210.40.56.82并未做端口映射来转发这样的请求数据,此时

  • 要么建立新的web服务端口映射
  • 要么建立反向SSH隧道
  • 其他方式(待探索)
    下面以反向SSH隧道为例说明如何具体操作。

3.1 安装x11以及gnome桌面环境

x11gnome关系:gnome 环境是建立在 x11之上的,它使用 x11来管理和显示图形界面。x11 本身并不提供一个完整的桌面环境,而是提供了构建桌面环境的基础。

  • 查看是否安装x11

dpkg -l | grep xserver

有这样的信息则说明已安装x11组件(显示相关元素即可):
描述

  • 否则使用下面指令安装x11组件

sudo apt install xorg
  • 查看是否安装gnome

dpkg -l | grep gnome

有这样的信息则说明已安装gnome组件(显示相关元素即可):
在这里插入图片描述

  • 否则使用下面指令安装gnome桌面环境

sudo apt install ubuntu-gnome-desktop

3.2 安装xrdp

xrdp介绍:xrdp是一个开源的远程桌面协议(RDP)服务器,它允许用户通过RDP客户端远程访问
Linux桌面。

  • 使用下面指令安装xrdp(如果安装了则跳过)

sudo apt install xrdp
  • 启动xrdp服务

sudo systemctl restart xrdp

由于xrdp服务默认使用3389端口,如果linux防火墙拒绝3389端口访问,则在防火墙中建立下面的规则:

sudo iptables -A INPUT -p tcp --dport 3389 -j ACCEPT

3.3 远程服务器ssh服务配置

  • 编辑ssh配置文件:

vi /etc/ssh/sshd_config
  • 修改以下内容为yes

AllowTcpForwarding yes
GatewayPorts yes
X11Forwarding yes

在这里插入图片描述

  • 重启ssh服务

sudo /etc/init.d/ssh restart
sudo /etc/init.d/xrdp restart

3.4 建立反向ssh隧道并验证

注意:该步骤为核心步骤,并且必须保证是在本地机器中操作(以windows举例)

  • cmd窗口中建立反向隧道:

ssh -v -f -N -T -L 10023:localhost:3389 root@210.40.56.82 -p 10022
  • 打开MobaXterm使用RDP工具验证

上述指令中将远程服务器3389端口映射到本地机器中的10023端口,因此配置如下信息:
在这里插入图片描述

  • 输入密码

在这里插入图片描述
如下显示进入ubuntu界面
在这里插入图片描述

3.5 linux桌面环境下启动浏览器访问web服务即可

在这里插入图片描述
===================================CHEERS ============================


http://www.mrgr.cn/news/58608.html

相关文章:

  • 《近似线性可分支持向量机的原理推导》 拉格朗日函数 公式解析
  • jupyter notebook改变默认启动路径
  • spring框架介绍
  • TCP simultaneous open测试
  • 【Linux系统】如何证明进程的独立性
  • Redis的RDB执行原理
  • [CSP-J 2023] 一元二次方程(模拟)
  • bitpoke- mysql-operator cluster
  • java 17天 TreeSet以及Collections
  • SSH 的 N 大黑科技玩法
  • LeetCode Hot 100:二分查找
  • Visual Studio中无法打开Qt中UI文件,简单快捷处理方法
  • Zookeeper客户端工具 Apache Curator 最佳实践
  • 10340 文本编辑器(vim)
  • Swift 是一种由苹果公司开发的强大而直观的编程语言,主要用于开发 iOS、macOS、watchOS 和 tvOS 等苹果平台的应用程序。
  • C++中如何使用文件系统路径
  • AcWing 89:a^b ← 快速幂
  • 136.只出现一次的数字
  • 【开源项目】经典开源项目数字孪生工地——开源工程及源码
  • fpga系列 HDL: 竞争和冒险 01