SSH из док-контейнера - PullRequest
       6

SSH из док-контейнера

0 голосов
/ 21 сентября 2018

Итак, я не работал с докером очень долго.Но это первый раз, когда у меня есть требование ssh OUT контейнера docker.Это должно быть просто, потому что я знаю, что могу подключаться к базам данных, извлекать файлы из репозиториев.Но по какой-то причине я не могу подключиться к удаленному серверу sftp.Интересно, что на моем локальном компьютере он работает нормально (без докера), но при сборке на Jenkins тесты не могут подключиться.Даже на MOCK-сервер, который я настроил и поместил тестовый файл перед запуском тестов.Запуск на Jenkins также затрудняет отладку, в чем проблема.

Я использую Jcraft, чтобы получить соединение ниже:

public static Session getSession (String host, String user) throws JSchException{
        JSch jsch = null;
        int port = 22;
        if (JunitHelperContext.getInstance.isJunit()){
            port = JunitHelperContext.getInstance.getSftpPort();
        Session session = jsch.getSession(user,host,port);
        java.util.Properties config  = new  java.util.Properties();
        config.put(“StrictHostKeyChecking”, “no”);
        if (!JunitHelperContext.getInstance.isJunit()){
            config.put(“PreferredAuthentications”, “publickey”);
            jsch.setKnownHosts(”~/.ssh/known_hosts”);
            jsch.addIdentity(“~/.ssh/id_rsa”);
        }
        session.setConfig(config);
        session.connect();

        return session;
    }
}

Мне нужно выйти и прочитать файл и обработатьЭто.Я могу собрать комплект, используя не докер шаблон.Файл найден и обработан.Запустив его в док-контейнере, я получаю эту ошибку при попытке подключения:

Invalid Key Exception: the security strength of SHA-1 digest algorithm is not sufficient for this key size. 
com.jcraft.jsch.JSchException:  Session.connect: java.io.IOException:   End of IO Stream Read

Так что это похоже на проблему безопасности.В производстве сертификаты находятся на сервере, и их можно прочитать в этом каталоге /.ssh.Но это фиктивный сервер Jcraft, и мне не нужно проходить аутентификацию.

Есть кусок, который мне здесь не хватает?Конфигурация в файле Docker? Спасибо заранее.

1 Ответ

0 голосов
/ 21 сентября 2018

Вероятно, вам нужно включить JCE-ресурсы с неограниченной силой JCE в док-контейнере:

http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html

Существуют ограничения на экспорт для этого криптографического материала, и я уверен, что ваш док-контейнер имеетэкспортируемые jar-файлы слабой силы.

Скопируйте local_policy.jar и US_export_policy.jar в Docker-контейнер с помощью Dockerfile и перезапишите все, что там есть.

Следуйте инструкциям по этой ссылке.

...