我正在尝试使用SFTP上传文件。我有一个正确的身份文件设置和引用。当我的流程进入SFTP时,它会暂停执行并提示输入Kerberos用户名和Kerberos密码。我不需要为这些输入任何内容,只需按Enter键就可以继续执行并正确上传我的文件。对此进行研究,它似乎是一个Java1.7错误,在这里引用:https://www.mulesoft.org/jira/browse/MULE-6864。在那个Jira任务中,他们提到"设置" PreferredAuthentications"属性"公钥,密码,键盘互动"在SftpClient中解决了这个问题。"那么我在哪里设置这个属性?它不是连接器的一部分。我尝试将其作为属性直接添加到XML中,但它也没有用。
我在2014年7月的Anypoint Studio中开发,部署到Mule 3.5.0EE。
答案 0 :(得分:3)
首选授权方法可以添加到连接器,但不能添加到端点,例如:
<sftp:connector name="sftpConnector" validateConnections="true"
doc:name="mySftp" keepFileOnError="true"
preferredAuthenticationMethods="publickey,password,keyboard-interactive">
</sftp:connector>
然后引用SFTP端点中的连接器。
然而,在Mule 3.5之前,这不是连接器中的可用选项,因此如果使用早期版本,则必须使用Steve等解决方案。它不是通过GUI设置的,而是应该直接放入XML中。
答案 1 :(得分:0)
答案与上面列出的Jira条目相同。我需要创建一个java类来进行配置。只需将以下类添加到项目中:
package com.mycompany.utils;
import org.apache.log4j.Logger;
import org.mule.api.MuleEventContext;
import org.mule.api.lifecycle.Callable;
import com.jcraft.jsch.JSch;
public class SftpFix implements Callable{
private static final Logger LOG = Logger.getLogger("com.mycompany");
static
{ // A bug fix for MULE-6864, where Java 7 causes an issue SSH'ing to a Linux box with Kerberos enabled.
LOG.info("Applying patch to JSch for MULE-6864");
JSch.setConfig("PreferredAuthentications", "publickey,password,keyboard-interactive");
}
@Override
public Object onCall(MuleEventContext eventContext){
return eventContext.getMessage().getPayload();
}
}