SFTP 會話工廠
從 3.0 版開始,預設不再快取會話。請參閱 SFTP 會話快取。 |
在配置 SFTP 配接器之前,您必須配置 SFTP 會話工廠。您可以使用常規 Bean 定義來配置 SFTP 會話工廠,如下例所示
<beans:bean id="sftpSessionFactory"
class="org.springframework.integration.sftp.session.DefaultSftpSessionFactory">
<beans:property name="host" value="localhost"/>
<beans:property name="privateKey" value="classpath:META-INF/keys/sftpTest"/>
<beans:property name="privateKeyPassphrase" value="springIntegration"/>
<beans:property name="port" value="22"/>
<beans:property name="user" value="kermit"/>
</beans:bean>
每次配接器從其 SessionFactory
請求會話物件時,都會建立新的 SFTP 會話。在底層,SFTP 會話工廠依賴 Apache MINA SSHD 程式庫來提供 SFTP 功能。
但是,Spring Integration 也支援快取 SFTP 會話。如需更多資訊,請參閱 SFTP 會話快取。
DefaultSftpSessionFactory 可以使用外部配置或擴充的 SshClient 。例如,可以使用來自 org.eclipse.jgit:org.eclipse.jgit.ssh.apache 程式庫的 org.eclipse.jgit.internal.transport.sshd.JGitSshClient 擴充功能來提供 HTTP/SOCKS Proxy 的支援。 |
使用此功能時,您必須將會話工廠包裝在快取會話工廠中,如稍後描述,以便在操作完成時不會實際關閉連線。 如果快取已重設,則僅當最後一個通道關閉時,會話才會斷線。 當新操作取得會話時,如果連線要斷線,則會重新整理連線。 |
現在您只需要將此 SFTP 會話工廠注入到您的配接器中即可。
為 SFTP 會話工廠提供值的更實用方法是使用 Spring 的 屬性預留位置支援。 |
從 6.1.3 版開始,DefaultSftpSessionFactory
引入了 createSftpClient(…)
以支援自訂 SftpClient
。請參閱下面的範例,了解如何在您的自訂 SftpClient
中覆寫 createSftpChannelSubsystem()
方法,以新增(例如)一些自訂 RequestHandler
以用於 SFTP 子系統請求和回覆
@Override
protected ChannelSubsystem createSftpChannelSubsystem(ClientSession clientSession) {
ChannelSubsystem sftpChannelSubsystem = super.createSftpChannelSubsystem(clientSession);
sftpChannelSubsystem.addRequestHandler((channel, request, wantReply, buffer) -> ...);
return sftpChannelSubsystem;
}
配置屬性
以下清單描述了 DefaultSftpSessionFactory
公開的所有屬性。
isSharedSession
(建構子引數)::當 true
時,單一 SftpClient
用於所有請求的 SftpSession
執行個體。預設為 false
。
sftpVersionSelector
::用於 SFTP 協定選擇的 SftpVersionSelector
執行個體。預設值為 SftpVersionSelector.CURRENT
。
host
::要連線的主機 URL。必要。
hostConfig
::org.apache.sshd.client.config.hosts.HostConfigEntry
執行個體,作為使用者/主機/連接埠選項的替代方案。可以使用 Proxy 跳躍屬性進行配置。
port
::應建立 SFTP 連線的連接埠。如果未指定,則此值預設為 22
。如果指定,則此屬性必須為正數。
user
::要使用的遠端使用者。必要。
knownHostsResource
::用於主機金鑰儲存庫的 org.springframework.core.io.Resource
。資源的內容必須與 OpenSSH known_hosts
檔案格式相同,並且如果 allowUnknownKeys
為 false,則為必要且必須預先填入。
password
::用於向遠端主機驗證的身分驗證密碼。如果未提供密碼,則需要 privateKey
屬性。
privateKey
::org.springframework.core.io.Resource
,表示用於向遠端主機驗證的身分驗證私密金鑰位置。如果未提供 privateKey
,則需要 password
屬性。
privateKeyPassphrase
::私密金鑰的密碼。如果您設定 userInfo
,則不允許使用 privateKeyPassphrase
。密碼會從該物件取得。選用。
timeout
::timeout 屬性用作 Socket timeout 參數,以及預設連線 timeout。預設值為 30 秒
。設定為 0
表示沒有 timeout;設定為 null
表示無限等待。
allowUnknownKeys
::設定為 true
以允許連線到具有不明(或已變更)金鑰的主機。預設值為 'false'。如果為 false
,則需要預先填入的 knownHosts
檔案。
userInteraction
::自訂 org.apache.sshd.client.auth.keyboard.UserInteraction
,在驗證期間使用。