JSch 有一个addIdentity方法重载 https://epaul.github.io/jsch-documentation/javadoc/com/jcraft/jsch/JSch.html#addIdentity-java.lang.String-byte:A-byte:A-byte:A-从缓冲区获取密钥:
public class JSch {
...
public void addIdentity(String name, byte[]prvkey, byte[]pubkey, byte[] passphrase) throws JSchException{
有关实现的示例,请参见JSch:从存储在 hdfs 上的私钥添加身份 https://stackoverflow.com/q/50859100/850848#50930385.
也可以看看在 Android 应用程序中从 Java JSch 中的字符串或资源加载私钥 https://stackoverflow.com/q/56758040/850848获取缓冲区中密钥的格式。
备择方案:
还有一个addIdentity过载需要一个Identity界面 https://epaul.github.io/jsch-documentation/javadoc/com/jcraft/jsch/JSch.html#addIdentity-com.jcraft.jsch.Identity-byte:A-:
public class JSch {
...
public void addIdentity(Identity identity, byte[] passphrase)
只需实现接口即可从您需要的任何地方获取私钥。
See IdentityFile
示例实现。
或者,将所有密钥存储到IdentityRepository https://epaul.github.io/jsch-documentation/javadoc/com/jcraft/jsch/IdentityRepository.html.
public interface IdentityRepository {
...
public boolean add(byte[] identity);
public class JSch {
...
public synchronized IdentityRepository getIdentityRepository()