1

JSCH で SFTP を作成しているときに、このエラーが発生します。ファイルを転送するために sftp 経由でリモート サーバーに接続しようとしていますが、以下の接続メソッドの呼び出し中にエラーが発生します。

java.lang.ExceptionInInitializerError
at javax.crypto.Cipher.getInstance(DashoA13*..)
at com.jcraft.jsch.jce.AES256CTR.init(AES256CTR.java:56)
at com.jcraft.jsch.Session.checkCipher(Session.java:2072)
at com.jcraft.jsch.Session.checkCiphers(Session.java:2049)
at com.jcraft.jsch.Session.send_kexinit(Session.java:592)
at com.jcraft.jsch.Session.connect(Session.java:286)
at com.jcraft.jsch.Session.connect(Session.java:162)
at scb.frame.runner.ServerSetup.contactServer(ServerSetup.java:56)

Caused by: java.lang.SecurityException: Cannot set up certs for trusted CAs
at javax.crypto.SunJCE_b.<clinit>(DashoA13*..)
... 34 more
Caused by: java.lang.SecurityException: Cannot locate policy or framework files!
at javax.crypto.SunJCE_b.i(DashoA13*..)
at javax.crypto.SunJCE_b.g(DashoA13*..)
at javax.crypto.SunJCE_b$1.run(DashoA13*..)
at java.security.AccessController.doPrivileged(Native Method)
... 35 more

接続する私のコード:

    String host = serverProperties.getProperty("Host");
    String username = serverProperties.getProperty("Username");
    String password = serverProperties.getProperty("Password");
        JSch jsch = new JSch();
        Security.addProvider(new com.sun.crypto.provider.SunJCE());
        Session session;
        try {
            session = jsch.getSession(username, host, 22);

        session.setPassword(password);

        Properties config = new Properties();
        config.put("StrictHostKeyChecking", "no");
        session.setConfig(config);
        session.connect();
        ChannelSftp sftpChannel = (ChannelSftp) session.openChannel("sftp");
        sftpChannel.connect();
        sftpChannel.get(sourceFile,destFile);

同じプログラムのコマンド ライン バージョンは例外なく実行できます。また、Jcraft[リンク] http://www.jcraft.com/jsch/examples/Sftp.java.html Web サイトからの SFTP の例は完全に実行されています。

4

1 に答える 1

1

これは、Java のセキュリティ制限に関係しています。デフォルトでは、鍵のサイズは 128 ビットに制限されています。スタックトレースから、AES 256 ビット暗号化を使用しようとしていることがわかります。

問題を解決するには、Java の Web サイトにアクセスして、Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files をダウンロードします。

http://www.oracle.com/technetwork/java/javase/downloads/index.html

(一番下にあります)

それらをJREにインストールすれば、準備完了です:)すべて米国政府に感謝します...

于 2013-02-09T15:14:42.900 に答える