2011-12-02 23 views
0

JSCHライブラリを使用して、2つのサーバー間でsftpを実行しています。しかし、私はファイルにgetResource()を使用してロードすることができません。実行時にエラーが発生します。私はパーミッションをチェックして、600であるので、それを読むことができるはずです。秘密鍵認証を使用した安全なFTP

JSch jsch = new JSch(); 
    File file = new File("/home/xxxxxx/.ssh/id_rsa"); 
    Session session = null; 
    URL keyFileURL = null; 
    URI keyFileURI = null; 
    if (file.exists()) 
    { 
     keyFileURL = SecureFTP.class.getClassLoader().getResource("/home/xxxxxx/.ssh/id_rsa"); 
     if (keyFileURL == null) 
     { 
      System.out.println("what"); 
      throw new RuntimeException("Key file not found in classpath"); 
     } 
    } 
    try{ 
      keyFileURI = keyFileURL.toURI(); 
    } 
    catch(Exception URISyntaxException) 
    { 
     System.out.println("Wrong URL. LOL"); 
} 



    jsch.addIdentity(new File(keyFileURI).getAbsolutePath()); 

リソースやパスの読み込みに何か不足していますか?

+0

どのファイルを使用していませんか?キーファイル?プログラムがうまくコンパイルされると、実行時にエラーが発生します。 – roymustang86

+1

/home/xxxxxx/.ssh/id_rsaはクラスパスにありますか?それはすべきでしょうか? "/ home"ディレクトリの下にファイルを取得したいようです。私はあなたのアプリのリソースとは思わない? –

答えて

3

は、なぜあなたはFile.toURL

File file = new File("/home/dev85adm/.ssh/id_rsa"); 
if (file.exists()) { 
    URL keyFileURL = file.toURL(); 
    //... 
+0

これは役に立ちましたが、今は関係のない認証が失敗しています。ありがとう。 – roymustang86

+0

@ roymustang86:問題ありません。 –

関連する問題