Java 使用Mina SSHD(客户端)使用私钥连接到SFTP
我正在尝试连接到一个需要私钥身份验证并希望使用Mina的SFTP服务器。通过查看文档,我可以看到如何使用密码身份验证而不是私钥身份验证来执行身份验证。我没有看到任何示例代码演示如何使用mina执行私钥身份验证 当前是否可以使用此库,如果可以,能否提供一个示例代码,说明如何加载密钥和执行连接 下面是我想使用SSHTools做的一个示例,以供参考Java 使用Mina SSHD(客户端)使用私钥连接到SFTP,java,apache-mina,Java,Apache Mina,我正在尝试连接到一个需要私钥身份验证并希望使用Mina的SFTP服务器。通过查看文档,我可以看到如何使用密码身份验证而不是私钥身份验证来执行身份验证。我没有看到任何示例代码演示如何使用mina执行私钥身份验证 当前是否可以使用此库,如果可以,能否提供一个示例代码,说明如何加载密钥和执行连接 下面是我想使用SSHTools做的一个示例,以供参考 private static void authenticate(Ssh2Client ssh2, String host, Integer por
private static void authenticate(Ssh2Client ssh2, String host, Integer port, String username, InputStream privateKey) {
Ssh2PublicKeyAuthentication auth = createKeyAuthentication(privateKey);
try {
int result = ssh2.authenticate(auth);
if (result != SshAuthentication.COMPLETE) {
throw new AuthenticationIncomplete(host, port, username, result);
}
} catch (SshException ex) {
throw new UnableToAuthenticate(host, port, username, ex);
}
}
private static Ssh2PublicKeyAuthentication createKeyAuthentication(InputStream privateKey) {
try {
SshPrivateKeyFile privateKeyFile = SshPrivateKeyFileFactory.parse(StreamUtil.readIntoByteArray(privateKey));
SshKeyPair keyPair = privateKeyFile.toKeyPair("");
Ssh2PublicKeyAuthentication auth = new Ssh2PublicKeyAuthentication();
auth.setPrivateKey(keyPair.getPrivateKey());
auth.setPublicKey(keyPair.getPublicKey());
return auth;
} catch (IOException | InvalidPassphraseException ex) {
throw new ConfigurationIssue(ex);
}
}