[英]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.