簡體   English   中英

來自Docker容器的SSH

[英]SSH from inside a docker container

因此,我與docker合作已有很長時間了。 但這是我第一次需要ssh出docker容器。 這應該很簡單,因為我知道我可以連接到數據庫以從存儲庫中提取文件。 但是由於某種原因,我似乎無法連接到遠程sftp服務器。 有趣的是,它在本地運行良好(沒有docker),但是在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;
    }
}

我的要求是出去閱讀文件並進行處理。 我可以使用非docker模板構建工具包。 找到並處理該文件。 雖然在docker容器中運行它,但在嘗試連接時出現此錯誤:

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容器中啟用Java的JCE無限強度功能:

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

此加密技術有出口限制,我敢打賭,您的Docker容器的出口罐子強度較弱。

復制local_policy.jar和的US_export_policy.jar與Dockerfile泊塢窗容器和覆蓋那里的東西。

按照該鏈接上的說明進行操作。

暫無
暫無

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

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