fix: 修复 SSH 连接配置中的 keyPassword 设置无效的问题.

由于 mina-ssh 的设计问题, 如果手动设置 KeyIdentityProvider, 则 SshClient 中的 FilePasswordProvider 将对此无效(SshClient 的 FilePasswordProvider 只会对默认密钥路径 "~/id_rsa" 起作用), keyPassword 应直接在 FileKeyPairProvider 设置.
This commit is contained in:
LamGC 2021-09-09 23:46:24 +08:00
parent 46ae196fe9
commit d6738d635c
Signed by: LamGC
GPG Key ID: 6C5AE2A913941E1D

View File

@ -44,10 +44,12 @@ public class InstanceSsh implements AutoCloseable {
sshClient.setForwardingFilter(Constants.instance.getForwardingFilter());
sshClient.setServerKeyVerifier(new OracleInstanceServerKeyVerifier(instance, authInfo));
if (authInfo instanceof PublicKeyAuthInfo info) {
sshClient.setKeyIdentityProvider(new FileKeyPairProvider(info.getPrivateKeyPath().toPath()));
FileKeyPairProvider fileKeyPairProvider = new FileKeyPairProvider(info.getPrivateKeyPath().toPath());
if (!Strings.isNullOrEmpty(info.getKeyPassword())) {
sshClient.setFilePasswordProvider(FilePasswordProvider.of(info.getKeyPassword()));
fileKeyPairProvider.setPasswordFinder(FilePasswordProvider.of(info.getKeyPassword()));
log.info("已设置密钥解密密码.");
}
sshClient.setKeyIdentityProvider(fileKeyPairProvider);
} else if (authInfo instanceof PasswordAuthInfo info) {
sshClient.addPasswordIdentity(info.getPassword());
} else {