通过代理连接sftp

news2024/9/25 7:19:21

通过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

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

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

相关文章

设计模式之策略模式【行为型模式】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档> 学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。各位小伙伴,如果您: 想系统/深入学习某…

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

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

不要再搞混标准化与归一化啦,数据标准化与数据归一化的区别!!

数据标准化与归一化 1. 数据的标准化(Standardization):2. 数据的归一化(Normalization):总结(数据标准化和数据归一化的不同之处和相同之处) 1. 数据的标准化(Standardi…

【数据结构】二叉树问题总结

目录 1.二叉树前序遍历,中序遍历和后序的实现 2.层序遍历 3.求二叉树中的节点个数 4.求二叉树中的叶子节点个数 5.求二叉树的高度 6.求二叉树第k层节点个数 7.二叉树查找值为x的节点 8.单值二叉树 9.二叉树最大深度 10.翻转二叉树 11. 检查两颗树是否相同…

【Linux实用篇】Linux常用命令(2)

目录 1.3 拷贝移动命令 1.3.1 cp 1.3.2 mv 1.4 打包压缩命令 1.5 文本编辑命令 1.5.1 vi&vim介绍 1.5.2 vim安装 1.5.3 vim使用 1.6 查找命令 1.6.1 find 1.6.2 grep 1.3 拷贝移动命令 1.3.1 cp 作用: 用于复制文件或目录 语法: cp [-r] source dest ​ 说明: …

数据分析概述2(详细介绍机器学习

目录 1.名词解释:1.1算法和模型1.2参数和超参数 2.基础算法:3.高级算法:4.数据准备5.常用python包小结: 1.名词解释: 1.1算法和模型 算法:用于训练模型的方法,分为有监督学习、无监督学习、半…

Centos7安装K8S

Centos7安装K8S 安装过程中没有出现的错误可以往下 根据以前一些博主写的博客,在小阳翻了不下几十篇博客之后,我果断是放弃了,于是找到了官网地址,然后也有坑 1. 关闭防火墙 systemctl stop firewalld systemctl disable firew…

算法通关村番外篇-LeetCode编程从0到1系列四

大家好我是苏麟 , 今天带来算法通关村番外篇-LeetCode编程从0到1系列四 . 矩阵 1672. 最富有客户的资产总量 描述 : 给你一个 m x n 的整数网格 accounts ,其中 accounts[i][j] 是第 i​​​​​ 位客户在第 j 家银行托管的资产数量。返回最富有客户所拥有的 资产…

【UEFI基础】EDK网络框架(IP4)

IP4 IP4协议说明 IP全称Internet Protocol,它属于网络层,对其下各种类型的数据链路层进行了包装,这样网络层可以跨越不同的数据链路,即使是在不同的数据链路上也能实现两端节点之间的数据包传输。 IP层的主要作用就是“实现终端…

java应用CPU过高查找原因

用top查到占用cpu最高的进程pid 根据进程ID找到占用CPU高的线程 ps -mp 60355 -o THREAD,tid | sort -r 用 printf "%x \n" 将tid换为十六进制:xid printf "%x \n" 6036 根据16进制格式的线程ID查找线程堆栈信息 jstack 60355 |grep ebcb -A…

Fiddler怎么抓请求做接口

第一步:安装fiddler 可以在官网下载最新版本 VIP小伙伴可以在课前准备下载,如果已经安装,请忽略 打开fiddler开始抓取测试对象的请求,以教管系统登录为例 打开fiddler,准备开始抓取,清空会话,开启抓取状态,因为fiddler默认抓取http协议,所以这里不需要设置什么。 打开系统登…

Windows项目部署流程

一、部署前需要的工作 ①配置环境变量:将所需的软件和工具的安装路径添加到系统的环境变量中,以便在命令行中可以直接使用。 ②部署项目文件:将项目的文件和代码复制到服务器上的指定目录中,例如Web服务器的网站根目录。 ③配置…

idea使用谷歌翻译 有道翻译 百度翻译

中文版:文件——设置——工具——Translation,然后选择需要配置的翻译 英文版:File——settings——Tools——Translation,然后选择需要配置的翻译 谷歌翻译大家可以度娘直接搜索Google_translation_win 有道和百度翻译得去注册申…

什么是有机搜索引擎优化以及如何入门

什么是有机搜索引擎优化? 有机搜索引擎优化,简称 SEO,是指从搜索引擎的无偿搜索结果中增加网站流量的做法。 未付费搜索结果是获得的列表,而不是付费的。 这样做的目的是让您的网页在与您业务相关的未付费搜索结果中排名靠前。…

Spring自带分布式锁你用过吗?

环境:SpringBoot2.7.12 本篇文章将会为大家介绍有关spring integration提供的分布式锁功能。 1. 简介 Spring Integration 是一个框架,用于构建事件驱动的应用程序。在 Spring Integration 中,LockRegistry 是一个接口,用于管理…

无需任何三方库,在 Next.js 项目在线预览 PDF 文件

前言: 之前在使用Vue和其它框架的时候,预览 PDF 都是使用的 PDFObject 这个库,步骤是:下载依赖,然后手动封装一个 PDF 预览组件,这个组件接收本地或在线的pdf地址,然后在页面中使用组件的车时候…

黑马程序员 Docker笔记

本篇学习笔记文档对应B站视频: 暂时无法在飞书文档外展示此内容 同学们,在前两天我们学习了Linux操作系统的常见命令以及如何在Linux上部署一个单体项目。大家想一想自己最大的感受是什么? 我相信,除了个别天赋异禀的同学以外&a…

学习笔记-mysql基础(DDL,DML,DQL)

一.DDL DDL,Data Definition Language,数据库定义语言,该语言包括以下内容: 对数据库的常用操作对表结构的常用操作修改表结构 1.对数据库的常用操作 -- 查看所有的数据库 show databases -- 创建数据库 create database [if not exists] test [charsetutf8] -- 切换 选择 …

如何判断 vite 的运行环境是开发模式还是生产模式 production? development?

如何判断 vite 的运行环境是开发模式还是生产模式 production? development? vite 有两种获取当前运行环境模式的方法: 官方说明: 完整说明地址: https://cn.vitejs.dev/guide/env-and-mode.html#node-env-and-modes…

Netty开篇——NIO章上(三)

Java NIO基本介绍 java non-blocking I/O 称为NIO(也叫New IO)。JDK4开始提供,同步非阻塞相关内容在 java.nio 包及子包下,对java.io 包中的很多类进行改写。三大核心: Channel(通道),Buffer(缓冲区),Selector(选择器)NIO是面向缓冲区或者面向块编程的。…