我是 Jsch 的新手,我正在尝试通过 sftp 连接到第三方。我可以通过 ssh 连接,所以我知道我有正确的用户、主机、端口和私钥文件,但是当我尝试通过 Jsch 连接时,我收到异常消息“Auth failed”,这几乎但不是很有帮助。这是我从在线示例中拼凑的代码:
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 连接中?有什么方法可以获取有关我失败的更多信息吗?