in transport/scp-transport/src/main/java/org/apache/airavata/mft/transport/scp/SCPMetadataCollector.java [142:192]
private SSHClient getSSHClient(SCPStorage scpStorage, SCPSecret scpSecret) throws IOException {
SSHClient sshClient = new SSHClient();
HostKeyVerifier hkv = new HostKeyVerifier() {
@Override
public boolean verify(String s, int i, PublicKey publicKey) {
return true;
}
@Override
public List<String> findExistingAlgorithms(String hostname, int port) {
return Collections.emptyList();
}
};
sshClient.addHostKeyVerifier(hkv);
File privateKeyFile = Files.createTempFile("id_rsa", "").toFile();
BufferedWriter writer = new BufferedWriter(new FileWriter(privateKeyFile));
writer.write(scpSecret.getPrivateKey());
writer.close();
KeyProvider keyProvider = sshClient.loadKeys(privateKeyFile.getPath(), scpSecret.getPassphrase());
final List<AuthMethod> am = new LinkedList<>();
am.add(new AuthPublickey(keyProvider));
am.add(new AuthKeyboardInteractive(new ChallengeResponseProvider() {
@Override
public List<String> getSubmethods() {
return new ArrayList<>();
}
@Override
public void init(Resource resource, String name, String instruction) {}
@Override
public char[] getResponse(String prompt, boolean echo) {
return new char[0];
}
@Override
public boolean shouldRetry() {
return false;
}
}));
sshClient.connect(scpStorage.getHost(), scpStorage.getPort());
sshClient.auth(scpSecret.getUser(), am);
return sshClient;
}