通过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.mzph.cn/news/883212.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

为什么需要MQ?MQ具有哪些作用?你用过哪些MQ产品?请结合过往的项目经验谈谈具体是怎么用的?

需要使用MQ的主要原因包括以下几个方面‌: ‌异步处理‌:在分布式系统中,使用MQ可以实现异步处理,提高系统的响应速度和吞吐量。例如,在用户注册时,传统的做法是串行或并行处理发送邮件和短信,这…

混个1024勋章

一眨眼毕业工作已经一年了,偶然进了游戏公司成了一名初级游戏服务器开发。前两天总结的时候,本来以为自己这一年没学到多少东西,但是看看自己的博客其实也有在进步,虽然比不上博客里的众多大佬,但是回头看也算是自己的…

Ruby CGI Cookie

Ruby CGI Cookie 在Web开发中,Cookie是一种常用的技术,用于在用户浏览器和服务器之间存储和传递信息。Ruby作为一种流行的编程语言,提供了CGI(Common Gateway Interface)库来处理Cookie。本文将详细介绍如何在Ruby中使用CGI库来创建、读取、修改和删除Cookie。 Cookie的…

如何检查前端项目和 Node 项目中未被使用的依赖包

前言 在日常的开发工作中,随着项目的不断迭代和功能的逐渐增加,我们难免会安装许多依赖包。时间一长,项目中可能会存在一些不再使用的依赖包。这些未被使用的依赖包不仅会增加项目的体积,还可能带来安全隐患。 本文将介绍如何检查…

如果自建 ChatGPT,我会如何从 Model、Inference runtime 构建整个系统

ChatGPT 是一个基于 LLM 的对话系统。本文将介绍如何构建一个类似 ChatGPT 的系统,包括从模型、推理引擎到整体架构的构建过程。 系统概览 让我们关注最核心的对话部分。 如上图所示,web 负责与用户进行交互,server 接受用户的对话请求&…

算法的学习笔记—数组中只出现一次的数字(牛客JZ56)

😀前言 在数组中寻找只出现一次的两个数字是一道经典的问题,通常可以通过位运算来有效解决。本文将详细介绍这一问题的解法,深入解析其背后的思路。 🏠个人主页:尘觉主页 文章目录 🥰数组中只出现一次的数字…

JavaScript 第27章:构建工具与自动化

在现代JavaScript开发中,构建工具、代码转换工具、代码质量和代码格式化工具对于提高开发效率、保持代码整洁以及确保代码质量有着至关重要的作用。下面将分别介绍Webpack、Babel、ESLint和Prettier的配置与使用,并给出一些示例。 1. 构建工具&#xff…

Vue组件学习 | 一、 Router组件

各位程序员1024节日快乐~ Vue Router 是 Vue.js 的官方路由管理器,它和 Vue.js 的核心深度集成,让构建单页面应用(SPA)变得简单。以下是 Vue Router 的基本用法 Vue Router 基本用法 安装 Vue Router 首先,你需要安…

【移动应用开发】界面设计(二)实现水果列表页面

续上一篇博客 【移动应用开发】界面设计(一)实现登录页面-CSDN博客 目录 一、采用ViewBinding实现一个RecyclerView 1.1 在app/build.gradle中添加recyclerview依赖,并打开viewBinding (1)在app/build.gradle中添加…

Servlet(三)-------Cookie和session

一.Cookie和Session Cookie和Session都是用于在Web应用中跟踪用户状态的技术。Cookie是存储在用户浏览器中的小文本文件,由服务器发送给浏览器。当用户再次访问同一网站时,浏览器会把Cookie信息发送回服务器。例如,网站可以利用Cookie记住用…

java 17天 TreeSet以及Collections

SortedSet TreeSet Collections 所有单值集合 1 SortedSet 特点:有序 唯一 实现类:TreeSet 利用TreeSet特有的对数据进行升序,再放到ArryList进行for下标倒序打印,或者利用自身的pollLast()取出最后元…

金融工程--pine-script 入门

背景 脚本基本组成 策略实现 实现马丁格尔策略 初始化变量:定义初始资本、初始头寸大小、止损百分比、止盈百分比以及当前资本和当前头寸大小等变量。 更新头寸:创建一个函数来更新头寸大小、止损价格和止盈价格。在马丁格尔策略中,每次亏…

如何在算家云搭建GPT-SOVITS(语音转换)

一、模型介绍 GPT-SOVITS是一款强大的小样本语音转换和文本转语音 WebUI工具。它集成了声音伴奏分离、自动训练集分割、中文ASR和文本标注等辅助工具。 具有以下特征: 零样本 TTS: 输入 5 秒的声音样本并体验即时文本到语音的转换。少量样本 TTS&…

micro-app【微前端实战】主应用 vue3 + vite 子应用 vue3+vite

micro-app 官方文档为 https://micro-zoe.github.io/micro-app/docs.html#/zh-cn/framework/vite 子应用 无需任何修改,直接启动子应用即可。 主应用 1. 安装微前端框架 microApp npm i micro-zoe/micro-app --save2. 导入并启用微前端框架 microApp src/main.ts …

智联招聘×Milvus:向量召回技术提升招聘匹配效率

01. 业务背景 在智联招聘平台,求职者和招聘者之间的高效匹配至关重要。招聘者可以发布职位寻找合适的人才,求职者则通过上传简历寻找合适的工作。在这种复杂的场景中,我们的核心目标是为双方提供精准的匹配结果。在搜索推荐场景下&#xff0c…

leetcode-75-颜色分类

题解(方案二): 1、初始化变量n0,代表数组nums中0的个数; 2、初始化变量n1,代表数组nums中0和1的个数; 3、遍历数组nums,首先将每个元素赋值为2,然后对该元素进行判断统…

druid 连接池监控报错 Sorry, you are not permitted to view this page.本地可以,发布正式出错

简介: druid 连接池监控报错 Sorry, you are not permitted to view this page. 使用Druid连接池的时候,遇到一个奇怪的问题,在本地(localhost)可以直接打开Druid连接池监控,在其他机器上打开会报错&#…

计数问题[NOIP2013]

题目描述 试计算在区间 1 到 n 的所有整数中,数字 x(0≤x≤9)共出现了多少次?例如,在 1 到 11 中,即在 1,2,3,4,5,6,7,8,9,10,11 中,数字 1 出现了 4 次。 输入格式 2 个整数 n,x,之…

【开源项目】经典开源项目数字孪生工地——开源工程及源码

飞渡科技数字孪生工地管理平台,以物联网、移动互联网技术为基础,充分应用人工智能等信息技术,通过AI赋能建筑行业,对住建项目内人员、车辆、安全、设备、材料等进行智能化管理,实现工地现场生产作业协调、智能处理和科…

sortablejs(前端拖拽排序的实现)

源文档&#xff1a;sortablejs - npm 安装 npm install sortablejs --save 引入项目 import Sortable from sortablejs; 使用示例 <template><ul id"items"><li>item 1</li><li>item 2</li><li>item 3</li>&l…