私はJschを初めて使用し、sftpを介してサードパーティに接続しようとしています。ssh経由で接続できるので、適切なユーザー、ホスト、ポート、秘密鍵ファイルがあることがわかりますが、Jsch経由で接続しようとすると、「Authfailed」という例外メッセージが表示されます。これが私がオンラインの例からつなぎ合わせた私のコードです:
String pvtkey = "{unixpath}/id_dsa";
ChannelSftp sftp = null;
JSch jsch = new JSch();
Session session = null;
try {
jsch.setKnownHosts("{unixpath}/known_hosts");
jsch.addIdentity(pvtkey);
session = jsch.getSession(user, connectionURL, 22);
Properties config = new Properties();
config.put("StrictHostKeyChecking", "no");
session.setConfig(config);
session.connect();
// ...some other code that never gets called
} catch (JSchException e) {
log.info(e.getMessage());
log.error(e.getCause());
}
いくつかのログを追加したので、session.connect()として失敗が発生していることがわかります。ユーザーとconnectionURLを取得し、それらが正しく渡されていることを確認しました。pvtkeyとknown_hostsへのパスは、キーとホストファイルを保持する場所への完全なUNIXパスであり、このプロセスを開始するスクリプトを保持するディレクトリに移動しました。私はまだsftpに少し慣れていませんが、公開鍵をJsch接続に追加していなくても、同じディレクトリにある必要がありますか?私の失敗に関するより多くの情報を得る方法はありますか?