我正在使用Jsch Library for SFTP。从我的终端,我已经对ftp机器进行了ssh,将ftp机器添加到known_host文件中。但是当我使用Jsch从Java连接到SFTP机器时,它无法找到主机,在Java和终端中为主机显示的ECDSA密钥指纹也不同。
但是我没有遇到任何使用pysftp从python连接到同一主机的问题。
如果主机ip相同,为什么Jsch会获得不同的签名?
我出于安全目的编辑了主机名。我从终端做了sftp并添加到已知主机。
这是java代码的片段,我用它连接到sftp。
String host = platformDetailMap.get(Constants.SFTPProps.HOST);
String username = platformDetailMap.get(Constants.SFTPProps.USERNAME);
String password = platformDetailMap.get(Constants.SFTPProps.PASSWORD);
JSch ssh = new JSch();
Session session = null;
Channel channel = null;
try {
session = ssh.getSession(username, host, SFTP_PORT);
session.setPassword(password);
// java.util.Properties config = new java.util.Properties();
// config.put("StrictHostKeyChecking", "no");
// session.setConfig(config);
session.connect();
channel = session.openChannel(SFTP_CHANNEL_IDENTIFIER);
channel.connect();
ChannelSftp sftp = (ChannelSftp) channel;
List<SFTPFile> fileList = new ArrayList<SFTPFile>();
Vector<ChannelSftp.LsEntry> entryList = sftp.ls(path);
这产生以下异常。