通过代理连接sftp

通过nginx代理连接sftp

  • 1.问题描述
  • 2.代码实现
  • 3.nginx配置
    • 3.1 创建sftp.stream文件
    • 3.2 修改nginx配置
  • 4.重启nginx生效

1.问题描述

问题是这样的。我们现在需要在微服务所在内网的A机器连接到外网的sftp,但是网络又不能直接到达。然后A机器到B机器是通过的,B机器到sftp的网络是通的,所以我们需要借助B机器进行转发。

在这里插入图片描述

2.代码实现

我们的代码是通过java的JSch实现的,下面给出简易实现

import com.jcraft.jsch.*;

class SFTPThroughTunnelExample {
    public static void main(String[] args) {
    	// 这个ip为B机器所在ip
        String host = "100.100.932.267";
        // 这个端口为B机器nginx所监听的端口
        int port = 66;
        String user = "sftp_user";
        String password = "sftp_passward";
        String remoteFilePath = "/path/to/remote/file.txt";
        String localFilePath = "/path/to/local/file.txt";

        try {
            JSch jsch = new JSch();
            Session session = jsch.getSession(user, host, port);
            session.setPassword(password);
            session.setConfig("StrictHostKeyChecking", "no");
            session.connect();

            ChannelSftp channelSftp = (ChannelSftp) session.openChannel("sftp");
            channelSftp.connect();
            System.out.println("连接上了");
            // 下载文件
            channelSftp.get(remoteFilePath, localFilePath);
            System.out.println("File downloaded successfully.");
            // 关闭连接
            channelSftp.exit();
            session.disconnect();
        } catch (JSchException | SftpException e) {
            e.printStackTrace();
        }
    }
}

3.nginx配置

B机器的nginx配置如下:

3.1 创建sftp.stream文件

我的nginx部署路径在

 /usr/local/nginx/

文件所处路径为

/usr/local/nginx/conf/myconf/sftp.stream
server {
        listen 66;
        # 这里的ip为sftp机器真正的ip
        proxy_pass 471.121.194.34:667;
        proxy_connect_timeout 30s;
        proxy_timeout  24h;
}

3.2 修改nginx配置

nginx.conf 的路径在

/usr/local/nginx/conf/nginx.conf

修改nginx.conf,在最下面的位置新增如下内容

stream{
	include myconf/*.stream;	
}

4.重启nginx生效

cd /usr/local/nginx/sbin/
service nginx restart

重启之后运行java代码,即可以实现通过代理连接sftp

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/316859.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

我开源了一个 Go 学习仓库

前言 大家好,这里是白泽,我是21年8月接触的 Go 语言,学习 Go 也正好两年半,我决定重启我之前未完成的计划,继续阅读《The Go Programing Language》,一年多前我更新至第五章讲解的时候,工作的忙…

浅谈当下企业环境下建设企业微电网能效系统的重要性

一 案例介绍 随着新型电力系统进程加快,新能源装机占比逐步提高,发电侧波动性、随机性导致可靠容量降低。加之恶劣天气带动负荷快速增长,造成电力供需紧张、电网尖峰负荷屡创新高,对现有能源供应带来巨大挑战。 国家电投五凌电…

新手入门:软件在测试过程中可能出现哪些问题?走,去看看~

对于很多测试新手来说,想要把自己的测试技术练得更精进,扎实自己的理论知识是必不可少的一门功课。下面,我们就一起来复习一下,那些让我们一知半解或者记不全的理论知识吧。 01 什么是软件测试? 最老套,但…

手写Webpack-Plugin

Plugin原理 一、Plugin作用 通过插件我们可以扩展webpack,使webpack可以执行更广泛的任务,拥有更强的构建能力。 Plugin工作原理 webpack 就像一条生产线,要经过一系列处理流程后才能将源文件转换成输出结果。 这条生产线上的每个处理流程…

LeetCode讲解篇之90. 子集 II

文章目录 题目描述题解思路题解代码 题目描述 题解思路 初始化一个变量start表示当前从哪里开始遍历nums 搜索过程的数字组合加入结果集 从start开始遍历nums 如果当前元素和前一个元素相等,前一个元素没被使用,则触发剪枝去重操作,跳过当…

[蓝桥学习] 并查集

并查集基础 并查集用来存储图中结点的连通关系。 一个点的根结点是该点的父亲的父亲的...父亲,根:某个结点的父亲是自己 当两个点的根相同时,就说他们是同一类的,连通的 找根 但是,如果点特别多且形成链的话&#x…

【MySQL】本地创建MySQL数据库详解

文章目录 下载MySQL安装重置密码本地连接 下载MySQL 下载网址:https://dev.mysql.com/downloads/mysql/ 安装 将下载好的压缩包解压到D盘。 在解压好的文件夹中创建my.ini文件。 将以下代码复制粘贴到创建好的my.ini文件中。注意修改文件路径。 [mysqld] #设置…

2024/1/14周报

文章目录 摘要Abstract文献阅读题目问题与创新方法A.CEMDAN方法B.LSTM网络C. CEEMDAN-LSTM模型 实验过程数据集与数据预处理参数设置评价指标和参数 实验结果 深度学习GRUGRU前向传播GRU的训练过程 总结 摘要 本周阅读了一篇基于CEEMDAN-LSTM的金融时间序列预测模型的文章&…

FineBI实战项目一(22):各省份订单个数及订单总额分析开发

点击新建组件,创建各省份订单个数及订单总额组件。 选择自定义图表,将province拖拽到横轴,将cnt和total拖拽到纵轴。 调节纵轴的为指标并列。 修改横轴和纵轴的标题。 修改柱状图样式: 将组件拖拽到仪表板。 结果如下:…

windows同时安装mysql5.0和8.0步骤(完美测试)

mysql5.0和mysql8.0配置如下 1.把如下配置复制下替换到my.ini中 mysql5.0配置如下 [mysqld] # 设置3306端口 port3306 # 设置mysql的安装目录 basedirF:\mysql-5.7.38 # 设置mysql数据库的数据的存放目录 datadirF:\mysql-5.7.38\data # 允许最大连接数 max_connections200 #…

【linux驱动开发】在linux内核中注册一个杂项设备与字符设备以及内核传参的详细教程

文章目录 注册杂项设备驱动模块传参注册字符设备 开发环境: windows ubuntu18.04 迅为rk3568开发板 注册杂项设备 相较于字符设备,杂项设备有以下两个优点: 节省主设备号:杂项设备的主设备号固定为 10,在系统中注册多个 misc 设备驱动时&…

JRebel热部署

热部署 什么热部署,简单来说我们正常的java项目需要编写java代码,但电脑执行的可不是java代码,而是转换后的class文件。这也意味着我们对程序进行微调,也要重新编译才能让程序展示我们需要的状态 而且不仅仅是我们手写的java文件…

统计学-R语言-4.3

文章目录 前言直方图茎叶图箱线图练习 前言 本篇介绍的是数值型数据怎么进行数据可视化,本篇介绍的有直方图、茎叶图、箱线图。 直方图 直方图(Histogram)用于描述连续型变量的频数分布,实际应用中常用于考察变量的分布是否对称…

谷粒商城P139集——云服务器frp内网穿透+nginx完美解决方案

1、修改本地HOST C:\Windows\System32\drivers\etc 目录下 host文件 上面前面是自己的云服务器ip 测试:如域名为gulimall.com 备注如果自己的云服务器nginx端口不是80 访问的时候记得打开 可以访问9200或者nacos尝试 则在浏览器中输入gulimall.com:9200&#xf…

解决“Ubuntu系统与windows系统之间不能执行复制粘贴”之问题

在win11中,发现“Ubuntu系统与windows系统之间不能互相复制粘贴”,只能通过“FPT客户端FileZilla”才能交换文件,但遇到字符串,就没法实现了,因此,在两个系统之间实现互相复制和粘贴字符串,就很…

x86是什么?

x86是一系列CPU架构的统称,这一术语起源于1978年,当时Intel发布了其首款16位微处理器——8086。这款处理器在当时引起了极大的关注,因为它首次引入了许多先进的技术,如寄存器间接寻址和分段内存管理等。随后,Intel又相…

【InternLM 大模型实战】第四课

XTuner 大模型单卡低成本微调实战 FINETUNE简介指令跟随微调增量预训练微调LoRA & QLoRA XTuner简介功能亮点适配多种生态适配多种硬件 8GB 显卡玩转LLMFlash AttentionDeepSpeed ZeRO 动手实战环节环境配置微调准备配置文件模型下载数据集下载修改配置文件开始微调将得到的…

中间人攻击如何进行防护

中间人攻击(Man-in-the-Middle Attack,简称 MITM 攻击)是一种常见的网络攻击方式,攻击者通过截获两个通信实体之间的通信数据,并在此基础上进行篡改、窃取或伪造等恶意行为。这种攻击方式因其攻击手段的隐蔽性和难以防…

LeetCode讲解篇之47. 全排列 II

文章目录 题目描述题解思路题解代码 题目描述 题解思路 初始化一个nums中元素是否被访问的数组used、记录还需要递归的深度deep,遍历nums,如果当前元素被访问过或者当前元素等于前一个元素且前一个元素没被访问过就跳过该次遍历,否则选择当前…

基于SSM+vue的篮球场预约管理系统(Java毕业设计)

大家好,我是DeBug,很高兴你能来阅读!作为一名热爱编程的程序员,我希望通过这些教学笔记与大家分享我的编程经验和知识。在这里,我将会结合实际项目经验,分享编程技巧、最佳实践以及解决问题的方法。无论你是…