2015-02-11 6 views
0

Я довольно новичок в разработке Android и пытаюсь использовать Jsch с помощью закрытого ключа для доступа к удаленному серверу. Я поместил закрытый ключ в папку res/raw, но я пытаюсь получить доступ к пути к файлу закрытого ключа при попытке аутентификации. Ранее я работал над проектом Java. Вот копия того, что у меня до сих пор.Jsch addidentity с помощью Android

private Session sshConnect() throws JSchException, IOException 
{ 
    try 
    { 
     //Login details 
     jschSession = jsch.getSession(sshUsername, sshServer, 22); 

     //Connect using private key and corresponding passphrase 
     jsch.addIdentity("./res/raw/id_rsa", passphrase); 

     //Ignore SSH key warnings 
     java.util.Properties config = new java.util.Properties(); 
     config.put("StrictHostKeyChecking", "no"); 
     jschSession.setConfig(config); 

     //System.out.println(localPort); 
     jschSession.connect(); 
     return jschSession; 
    } 
    catch (Exception ex) 
    { 
     throw new RuntimeException("SSH connection failed: " + ex.getMessage(), ex); 
    } 
} 

Это то выдает следующее сообщение об ошибке при попытке запустить

java.lang.RuntimeException: SSH connection failed: java.io.FileNotFoundException: ./res/raw/id_rsa: open failed: ENOENT (No such file or directory) 

Я попытался следующие, чтобы попытаться получить доступ к содержимому папки Рез, без такой удачи:

jsch.addIdentity("file:///android_res/raw/id_rsa", passphrase); 

ответ

0

Я не уверен, что есть доступ к необработанному ресурсу в виде файла.

Возможно, вам необходимо сохранить ресурс на временный путь и обратиться к нему в addIdentity.

Для доступа к ресурсу смотри, например:
Android how to get access to raw resources that i put in res folder?

+0

Еще раз спасибо за ваш ответ, есть ли другой способ, которым я могу получить доступ к дополнительным файлам без сохранения в разрешении или папки активов? @Мартин – user3424480

1

Просто, вы можете получить файл из сырой папки.

InputStream privateKeyByteStream = getResources() 
      .openRawResource(
       getResources().getIdentifier("private_key_without_extension", "raw", getPackageName())); 

Затем добавьте идентификационные

jSch.addIdentity("anyIdentityName", privateKeyBytes, publicKeyBytes, passphrase); 
Смежные вопросы