【问题标题】:HTTPS tunnel inside SSH using JSch使用 JSch 的 SSH 内的 HTTPS 隧道
【发布时间】:2019-03-05 16:18:21
【问题描述】:

我想使用 Java 库 JSch 通过 SSH 与 HTTPS 服务器通信。图书馆网站上的流转发示例很容易使用,即使在 SO 上也是这样的代码 (Java JSch create channel to access remote server via HTTP(s))。

问题是我想使用 HttpsURLConnection 类通过 HTTPS 进行通信。例如,为了提出GET 请求,我尝试对来自Channel 类(来自JSch)的InputStream 和来自HttpsUrlConnectionInputStream 进行操作。

【问题讨论】:

  • 通常可以通过 SSL 访问 Https,但是由于服务器证书与服务器名称不匹配(例如,服务器名称 www.example.org 转发到 localhost),最终会导致证书验证错误。因此,您必须实现和使用自定义HostnameVerifier

标签: java http ssh https jsch


【解决方案1】:

通过 SSH 连接将本地端口转发到远程 HTTP 服务器端口:

Session session = jsch.getSession("username", "ssh.example.com");
// ...
session.connect();

int forwardedPort = session.setPortForwardingL(0, "http.example.com", 80); 

现在您可以将HttpsUrlConnection 连接到http.example.com 和端口forwardedPort

【讨论】:

    猜你喜欢
    • 2015-07-28
    • 1970-01-01
    • 2015-05-05
    • 2015-03-09
    • 1970-01-01
    • 1970-01-01
    • 2020-09-17
    • 2014-07-09
    • 2018-03-23
    相关资源
    最近更新 更多