如何阻止Mule SFTP连接器提示输入Kerberos用户名?

时间:2014-08-13 15:37:41

标签: mule-studio

我正在尝试使用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。

2 个答案:

答案 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();
    }

}