我正在编写一个小程序,需要通过 SFTP 连接到远程服务器,下载文件,然后处理该文件。通过一些答案,我发现 JSch 看起来非常适合这个任务。到目前为止,它很容易使用,而且我已经让它正常工作了,只有一个小问题需要解决。我使用以下代码进行连接和下载文件:
JSch jsch = new JSch();
Session session = null;
try {
session = jsch.getSession("username", "127.0.0.1", 22);
session.setConfig("StrictHostKeyChecking", "no");
session.setPassword("password");
session.connect();
Channel channel = session.openChannel("sftp");
channel.connect();
ChannelSftp sftpChannel = (ChannelSftp) channel;
sftpChannel.cd(REMOTE_FTP_DIR);
sftpChannel.lcd(INCOMING_DIR);
sftpChannel.get(TMP_FILE, TMP_FILE);
sftpChannel.exit();
session.disconnect();
} catch (JSchException e) {
e.printStackTrace();
} catch (SftpException e) {
e.printStackTrace();
}
这段代码能够正常运行并获得文件。我在Linux服务器上运行此代码时,JSch会询问我的Kerberos用户名和密码,如下所示:
Kerberos用户名[george]:
输入george的Kerberos密码:
我只需按回车键回答这两个问题,然后程序似乎就可以继续运行而没有任何问题了。但是,我需要通过cron任务对此代码进行自动化处理,因此我宁愿不让它暂停程序来询问我这两个问题。是否有什么我没有提供的东西,可以使其不再提供这些信息?是否需要采取某些措施来阻止它继续询问?希望有人能提出一些想法。谢谢。