簡體   English   中英

Apache Nifi SOCKS 代理設置

[英]Apache Nifi SOCKS Proxy Setup

我嘗試使用 Apache Nifi 訪問 SFTP 源。 處理器不包含代理設置。 因此,我想在啟動時提供代理詳細信息作為 JVM 參數。

java.arg.16=-DsocksProxyHost="123.123.123.123"
java.arg.17=-DsocksProxyVersion=5
java.arg.18=-Djava.net.socks.username="MYUSERNAME"
java.arg.19=-Djava.net.socks.password="MYPASSWORD"
java.arg.20=-DsocksProxyPort=1080

這不起作用。 我在 github https://github.com/apache/nifi/search?utf8=%E2%9C%93&q=jsch&type=上的 nifi 代碼中找不到明確使用代理的任何 jsch 實現

問題是:Jsch 是否在內部使用了提供參數?

NiFi 使用的底層 SFTP 庫 Jsch 有自己的代理實現,例如 com.jcraft.jsch.ProxySOCKS5。 這些類似乎不使用系統屬性,例如 -Duser.name。

相反,應從客戶端應用程序代碼手動傳遞代理實例,這需要更改 NiFi SFTP 相關處理器。 如果以下示例看起來也適用於您的環境,那么我建議創建一個 JIRA 票證以請求從Apache NiFi JIRA添加對 SFTP 處理器的代理支持。

我寫了一個示例代碼來確認 Jsch SFTP 客戶端可以使用 SOCKS5 代理。 以下代碼有效:

import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Proxy;
import com.jcraft.jsch.ProxySOCKS5;
import com.jcraft.jsch.Session;
import org.junit.Test;

import java.util.Properties;
import java.util.Vector;

public class TestSFTPProxy {

    @Test
    public void test() throws Exception {
        final JSch jsch = new JSch();
        Session session = jsch.getSession("ftp-user", "ftp-server-host");
        final Properties properties = new Properties();
        properties.setProperty("StrictHostKeyChecking", "no");
        properties.setProperty("PreferredAuthentications", "publickey,password,keyboard-interactive");
        session.setConfig(properties);

        Proxy proxy = new ProxySOCKS5("proxy-host", proxy-port);
        proxy.setUserPasswd("proxy-user", "proxy-password");
        session.setProxy(proxy);

        session.setPassword("ftp-user-password");
        session.connect();

        ChannelSftp sftp = (ChannelSftp) session.openChannel("sftp");

        sftp.connect();
        System.out.println(sftp);

        Vector ls = sftp.ls("path");
        System.out.println(ls.get(0));

        sftp.disconnect();
        session.disconnect();
    }

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM