JSchはネットワークプロキシをSSHセッションに載せます。そのセッション上で開くSFTPチャネルは、確立された経路を使います。

接続先のSSHサーバー向けに設定済みのセッションでは、接続前にHTTP CONNECTゲートウェイを選びます。

ProxyHTTP gateway = new ProxyHTTP("proxy.example", 8080);
session.setProxy(gateway);
session.connect(10000);

セッションはSSHの宛先、ログイン設定、ホスト鍵ポリシーを保持したままです。ゲートウェイのアドレスは中継者を指します。そのポリシーは宛先の実際のSSHポートを許可している必要があります。許可された公開経路にある公開SFTPサーバーなら、HTTPプロキシ一覧が最初の例のゲートウェイアドレスを提供します。プロキシ資格情報のない新しいプロキシアダプターを使い、実際のSSHホストとポートの許可を確認してください。

SOCKS5サービスなら、代わりに対応するアダプターを使います。

session.setProxy(new ProxySOCKS5("proxy.example", 1080));

端点のプロトコルに合うアダプターを選びます。HTTPプロキシとSOCKSリスナーは同じ折衝を理解しません。

JSchのHTTP Basicプロキシログインが適切な場合は、接続前にgateway.setUserPasswd(proxyUser, proxyPassword)を呼びます。SSHアカウントはセッション側に設定されたままです。セッション接続後にSFTPチャネルを開き、転送が終わったらチャネルとセッションを切断します。

関連記事