Jsch addidentity с использованием Android

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

    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)

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

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

person user3424480    schedule 11.02.2015    source источник


Ответы (2)


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

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

Затем добавьте личность

jSch.addIdentity("anyIdentityName", privateKeyBytes, publicKeyBytes, passphrase);
person huseyin    schedule 13.04.2016

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

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

Для доступа к ресурсу см., Например:
Android, как получить доступ к необработанным ресурсам, которые я помещаю в папку res?

person Martin Prikryl    schedule 12.02.2015