Jsch: HTTPS через туннель - PullRequest
1 голос
/ 19 марта 2020

Я могу установить sh сеанс переадресации портов в Ubuntu следующим образом:

ssh -L 8000:dev.mycompany.com:443 jump.mycompany.com

Теперь я хотел бы эмулировать это с помощью Jsch:

    public static void openTunnel() {
    JSch jsch = new JSch();
    String privateKey = "~/.ssh/id_rsa";
    try {
        jsch.addIdentity(privateKey);
        log.info("Connecting to {}@{}", getJumpUser(), getJumpServer());
        Session session = jsch.getSession(getJumpUser(), getJumpServer(), 22);
        session.connect();
        session.setPortForwardingL(8000, getHost(), 433);
    } catch (JSchException e) {
        log.error("", e);
    }
}

Однако я получаю следующее исключение после настройки туннеля и попытки подключиться к нему с помощью RestTemplate (Spring HTTP Client - но curl также выдает ошибку):

ssl.SSLHandshakeException: Remote host closed connection during handshake
    at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:744)

Что мне делать нужно сконфигурировать в Jsch, чтобы он делал то же самое, что и клиент opens sh?

1 Ответ

1 голос
/ 19 марта 2020

Полагаю, вы пытаетесь подключиться к веб-серверу https, который не доступен c.

Перенаправление портов работает, НО https не будет работать на localhost: 8000, потому что сертификат предназначен для dev.mycompany.com, а не localhost.

Вы можете обмануть, добавив запись в Ваш hosts файл.

127.0.0.1 dev.mycompany.com

Но, вероятно, проще попробовать socks5.

ssh jump.mycompany.com -D 8005

И затем установить в своем браузере (пример для firefox):

Выберите: Ручная настройка прокси:
Socks Хост: localhost
Порт: 8005
Socks5

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...