SSH信任的SFTP与DefaultSftpSessionFactory抛出异常

时间:2015-09-17 10:19:11

标签: java spring ssh sftp private-key

我要求从SFTP服务器下载/上传所有txt文件。 我将Spring配置用作org.springframework.integration.sftp.session.DefaultSftpSessionFactory 和入境 它的投掷ServletContext resource not found。 密码为空白

<bean id="acceptAllFileListFilter" class="org.springframework.integration.file.filters.AcceptAllFileListFilter" />


<bean id="inboundSftpSessionFactory" class="org.springframework.integration.file.remote.session.CachingSessionFactory">
    <constructor-arg ref="inboundDefaultSftpSessionFactory" />
</bean>

<bean id="inboundDefaultSftpSessionFactory" class="org.springframework.integration.sftp.session.DefaultSftpSessionFactory">
        <property name="host" value="${sftp.host}" />
        <property name="privateKey" value="/home/tech/id_rsa"/>
        <property name="privateKeyPassphrase" value="${sftp.private.key.passphrase}"/>
        <property name="port" value="${sftp.port}" />       
        <property name="user" value="${sftp.user}" /> 
        <property name="password" value="${sftp.password}" />
    </bean>

...

Caused by: java.io.FileNotFoundException: Could not open ServletContext resource [/home/tech/id_rsa]

        at org.springframework.web.context.support.ServletContextResource.getInputStream(ServletContextResource.java:141)

        at org.springframework.integration.sftp.session.DefaultSftpSessionFactory.initJschSession(DefaultSftpSessionFactory.java:371)

        at org.springframework.integration.sftp.session.DefaultSftpSessionFactory.getSession(DefaultSftpSessionFactory.java:347)

        ... 27 more

文件存在于指定位置

当我尝试使用密码配置时,它的工作正常。

1 个答案:

答案 0 :(得分:2)

该文件不在指定位置,因为它尝试从应用程序的根目录加载文件,但它不在那里。它位于文件系统上,但这不是您指定的。

使用file:前缀属性值。

<bean id="inboundDefaultSftpSessionFactory" class="org.springframework.integration.sftp.session.DefaultSftpSessionFactory">
    <property name="host" value="${sftp.host}" />
    <property name="privateKey" value="file:/home/tech/id_rsa"/>
    <property name="privateKeyPassphrase" value="${sftp.private.key.passphrase}"/>
    <property name="port" value="${sftp.port}" />       
    <property name="user" value="${sftp.user}" /> 
    <property name="password" value="${sftp.password}" />
</bean>

有关resource loading的详细信息,请参阅参考指南。