SFTP 适配器

BizTalk Server包括一个 SFTP 适配器,用于使用 SSH 文件传输协议从安全 FTP 服务器发送和接收消息。 本主题包括配置 SFTP 接收位置以及配置 SFTP 发送端口以从安全 FTP 服务器接收和发送消息的步骤。 它还包括常见问题和答案。

必备条件

从 BizTalk Server 2016 开始,SFTP 适配器使用 WinSCP 连接到 SFTP,因此支持更大范围的 SFTP 服务器。 在BizTalk Server运行时上下载 WinSCP。 请确保为每个BizTalk Server版本检查支持的 WinSCP 版本:

  • 使用 CU1 或 CU2 BizTalk Server 2020 - WinSCP 版本 5.17.6
  • BizTalk Server 2020 - WinSCP 版本 5.15.4
  • 具有 CU9 的 BizTalk Server 2016 - WinSCP 版本 5.19.2
  • 具有 CU7 的 BizTalk Server 2016 - WinSCP 版本 5.15.9
  • BizTalk Server 2016 - WinSCP 版本 5.7.7

或在硬件和软件要求

BizTalk Server 2013 和 BizTalk Server 2013 R2 使用较旧的 ssh 库,而不是具有有限服务器兼容性的 WinSCP。

配置接收位置

注意

在创建接收位置之前,必须已添加单向接收端口。 有关具体步骤,请参阅 创建接收端口

  1. 在BizTalk Server管理控制台中,依次展开“BizTalk Server”、“BizTalk 组”、“应用程序”,然后展开要创建接收位置的应用程序。

  2. 在左窗格中,单击“接收端口” 节点,在右窗格中,右键单击你希望将新的接收位置与其关联的接收端口,然后单击“属性”

  3. 在“接收端口属性” 对话框的左窗格中,选择“接收位置” ,然后在右窗格中单击“新建” 以创建新的接收位置。

  4. 在“接收位置属性”对话框的“传输”部分中,从“类型”下拉列表中选择“SFTP”,然后单击“配置”以配置接收位置的传输属性。

  5. SFTP 传输属性中,执行以下操作:

    其他

    使用此选项 要执行此操作
    连接限制 指定服务器允许的并行打开的最大连接数。

    此设置针对每个服务器和每个接收位置。 请考虑下列情形:

    - 有两个接收位置具有相同的配置属性值,包括 ConnectionLimit 属性设置为相同的值。 例如, 属性设置为 6。 在这种情况下,有一个连接池 (两个接收位置使用的 6 个可用连接) 。

    - 有两个接收位置配置了相同的配置值,并将 ConnectionLimit 属性设置为不同的值。 例如,ReceiveLocation1 属性设置为 6,ReceiveLocation2 属性设置为 5。 在这种情况下,每个接收位置都有自己的连接池和自己的可用连接。 ReceiveLocation1 连接池具有 6 个可用连接。 ReceiveLocation2 连接池具有 5 个可用连接。
    日志 从 BizTalk Server 2016 开始提供。

    输入用于创建客户端日志文件的完整路径。 使用此日志文件排查任何错误。
    最长连接重用时间(以秒为单位) 从 BizTalk Server 2016 CU 7 开始可用。

    最长连接重用时间允许连接正常关闭,并在连接已使用特定时间后从池中删除。 值为 0 或更小表示此行为已禁用。

    轮询

    使用此选项 要执行此操作
    启用时间戳比较 从 BizTalk Server 2016 累积更新 6 开始可用。

    如果将 “下载后保留” 设置为 True,则此属性确定文件时间戳中的更改是否会触发重新下载文件。

    默认值:
    轮询间隔 指定适配器轮询服务器的时间间隔。 若要连续轮询,请将此值设置为零。

    默认值: 5
    重新下载间隔 从 BizTalk Server 2016 累积更新 6 开始可用。

    指定将再次下载文件的时间间隔。 如果 “下载后保留” 为 True 且 “启用时间戳比较” 设置为 False,则适用。 如果设置为 -1,则不会再次下载该文件。

    默认值: 0

    -1 指示适配器不会再次下载文件。

    0 表示适配器将在每个轮询周期中下载该文件。
    下载后保留 从 BizTalk Server 2016 累积更新 6 开始可用。

    指定适配器在下载文件后是否将保留 SFTP 服务器中的文件。

    默认值:
    计价单位 指定所指定的轮询间隔的单位,例如,秒、分钟、小时或天。

    默认值:

    代理 (从 BizTalk Server 2013 R2) 开始可用

    使用此选项 要执行此操作
    地址 指定代理服务器的 DNS 名或 IP 地址。
    密码 指定代理服务器的密码。
    端口 指定代理服务器的端口。
    类型 指定代理服务器使用的协议。
    UserName 指定代理服务器的用户名。

    安全性

    使用此选项 要执行此操作
    接受任何 SSH 服务器主机密钥 如果 为 True,则接收位置接受来自服务器的任何 SSH 公共主机密钥。 如果 为 False,则接收位置使用服务器的指纹进行身份验证。 在 SSHServerHostKeyFingerPrint 属性中输入指纹。

    默认值:
    客户端身份验证模式 选择接收位置用于向 SSH 服务器对客户端进行身份验证的身份验证方法。 如果设置为 “密码”,则必须在 Password 属性中输入值。 如果设置为 PublicKeyAuthentication,则必须在 PrivateKey 属性中输入用户的私钥。 如果设置为 MultiFactorAuthentication ,则必须输入 用户名 及其 PasswordPrivateKey。 此外,如果私钥受密码保护,则为 PrivateKeyPassword 属性输入密码。

    默认值: 密码
    加密密码 从 BizTalk Server 2013 R2 开始可用。

    输入加密密码的类型。

    BizTalk Server 2013 R2 选项:自动、AES 和 TripleDES

    BizTalk Server 2016 选项:自动、AES、Arcfour、Blowfish、TripleDES 和 DES
    密钥交换算法选择策略 从 BizTalk Server 2016 累积更新 6 开始可用。

    指定以逗号分隔的 KEX 首选项顺序列表。 令牌 WARN 用于分隔不合格 KEX。 BIZTalk SFTP 适配器不会使用 WARN 之后的任何内容。 示例:ecdh,dh-gex-sha1,dh-group14-sha1,rsa,WARN,dh-group1-sha1。 有关最新信息,请访问 WinSCP 网站。
    密码 如果将 ClientAuthenticationMode 设置为“密码”,请指定 SFTP 用户 密码
    私钥 如果将 ClientAuthenticationMode 设置为 PublicKeyAuthentication,请指定 SFTP 用户的私钥。

    注意: 私钥文件必须是指定的 .ppk 文件。
    私钥密码 如果需要,请为 PrivateKey 属性中指定的密钥指定私钥密码。
    SSH 服务器主机 Key FingerPrint 指定 SSH 服务器的公共主机密钥的指纹。
    SSO 关联 从 BizTalk Server 2020 开始提供。

    指定企业单一登录关联应用程序。
    用户名 指定登录 SFTP 服务器所用的用户名。

    SSH 服务器

    使用此选项 要执行此操作
    文件掩码 指定在从安全 FTP 服务器检索文件时要使用的文件掩码。 若要提高性能,请更具体地避免尝试下载其他受保护的文件。
    文件夹路径 指定安全 FTP 服务器上可供接收位置从中检索文件的文件夹路径。 若要提高性能,请避免使用包含大量未收到的文件的文件夹。
    端口 指定在其上进行文件传输的安全 FTP 服务器的端口地址。
    服务器地址 指定安全 FTP 服务器的服务器名称或 IP 地址。
  6. 单击 “确定”

  7. 在“接收位置属性” 对话框中输入相应的值,完成对接收位置的配置,然后单击“确定” 保存设置。 有关“ 接收位置属性 ”对话框的信息,请参阅 创建接收位置

配置发送端口

  1. 在BizTalk Server管理控制台中,创建新的发送端口或双击现有发送端口进行修改。 有关详细信息,请参阅 创建发送端口。 配置所有发送端口选项,并在“常规”选项卡的“传输”部分中为“类型”选项指定 SFTP

  2. 在“ 常规 ”选项卡上的“ 传输 ”部分中,单击“ 配置 ”按钮。

  3. SFTP 传输属性中,输入以下内容:

    其他

    使用此选项 要执行此操作
    连接限制 指定服务器允许的并行打开的最大连接数。
    日志 从 2016 BizTalk Server开始可用。

    输入完整路径以创建客户端日志文件。 使用此日志文件排查任何错误。
    最长连接重用时间(秒) 从 BizTalk Server 2016 CU 7 开始可用。

    最长连接重用时间允许连接正常关闭,并在连接已使用特定时间后从池中删除。 值为 0 或更小表示此行为已禁用。
    临时文件夹 从 BizTalk Server 2013 R2 开始可用。

    SFTP 服务器上要将大型文件上载到的临时文件夹,之后这些文件可以自动移动到同一服务器上所需的位置。

    代理 (从 BizTalk Server 2013 R2) 开始可用

    使用此选项 要执行此操作
    地址 指定代理服务器的 DNS 名或 IP 地址。
    密码 指定代理服务器的密码。
    端口 指定代理服务器的端口。
    类型 指定代理服务器使用的协议。
    用户名 指定代理服务器的用户名。

    安全性

    使用此选项 要执行此操作
    访问任何 SSH 服务器主机密钥 如果 为 True,则发送端口接受来自服务器的任何 SSH 公共主机密钥。 如果 为 False,则端口将主机密钥与 SSHServerHostKey 属性中指定的密钥匹配。

    默认值:
    客户端身份验证模式 指定发送端口用于对连接 SSH 服务器的客户端进行身份验证的身份验证方法。 如果设置为 “密码”,则必须在 Password 属性中输入值。 如果设置为 PublicKeyAuthentication,则必须在 PrivateKey 属性中输入用户的私钥。 如果设置为 MultiFactorAuthentication ,则必须为 用户名 提供其 PasswordPrivateKey。 此外,如果私钥受密码保护,则为 PrivateKeyPassword 属性输入密码。

    默认值: 密码
    加密密码 从 BizTalk Server 2013 R2 开始可用。

    输入加密密码的类型。

    BizTalk Server 2013 R2 选项:自动、AES 和 TripleDES

    BizTalk Server 2016 选项:自动、AES、Arcfour、Blowfish、TripleDES 和 DES
    密钥交换算法选择策略 从 BizTalk Server 2016 累积更新 6 开始可用。

    指定以逗号分隔的 KEX 首选项顺序列表。 标记 WARN 用于分隔不合格 KEX。 示例:ecdh,dh-gex-sha1,dh-group14-sha1,rsa,WARN,dh-group1-sha1。 有关最新信息,请访问 WinSCP 网站。
    密码 如果将 ClientAuthenticationMode 设置为 Password,请指定 SFTP 用户 密码
    私钥 如果将 ClientAuthenticationMode 设置为 PublicKeyAuthentication,请指定 SFTP 用户的私钥。
    私钥密码 如果 PrivateKey 属性中指定的密钥需要,请指定 私钥 密码。
    SSH 服务器主机键指打印 如果 AccessAnySSHServerHostKey 属性设置为 False,则指定适配器用于对服务器进行身份验证的服务器指纹。 如果指纹不匹配,则连接会失败。
    SSO 关联 从 BizTalk Server 2020 开始提供。

    指定企业单一登录关联应用程序。
    用户名 指定安全 FTP 服务器的用户名。

    SSH 服务器

    使用此选项 要执行此操作
    如果存在,则追加 如果目标位置已存在要传输到安全 FTP 服务器的文件,则此属性用于指定是否应将所传输文件中的数据附加到现有文件中。 如果设置为 True,则追加数据。 如果设置为 False,则会覆盖目标服务器上的文件。

    默认值:
    文件夹路径 指定进行文件复制的安全 FTP 服务器上的文件夹路径。
    端口 指定在其上进行文件传输的安全 FTP 服务器的端口地址。
    服务器地址 指定安全 FTP 服务器的服务器名称或 IP 地址。
    目标文件名 指定将文件传输到安全 FTP 服务器时使用的名称。 你还可以将宏用于目标文件名。
  4. 再次单击“确定”和“确定”以保存设置。

使用较新的 WinSCP 版本

若要将较新版本的 WinSCP 与BizTalk Server配合使用,请添加程序集重定向,以便 BizTalk 知道要加载哪个程序集。 重定向在BizTalk Server配置文件中配置:BTSNTSVC.exe.config (32 位主机实例) ,) BTSNTSVC64.exe.config (64 位主机实例。

下面包括示例配置语法。 请务必将 替换为 %NEWVERSION% 你的版本:

<configuration>
 <runtime>
  <assemblyBinding>
   <dependentAssembly>
    <assemblyIdentity name="WinSCPnet" publicKeyToken="2271ec4a3c56d0bf" culture="neutral" />
    <bindingRedirect oldVersion="1.0.0.0-1.65535.65535.65535" newVersion="%NEWVERSION%"/>
   </dependentAssembly>
  </assemblyBinding>
 </runtime>
</configuration>

完成后,配置如下所示:

配置文件中的程序集重定向。

常见问题

问题 Answer
支持哪些 SFTP 服务器? 请参阅 支持的 SFTP 服务器。 从 BizTalk Server 2016 开始,SFTP 适配器使用 WinSCP 连接到 SFTP。 因此,支持 WinSCP 的 SFTP 服务器应正常工作。
SFTP 适配器是否可以用于相互身份验证方法(公钥和密码)? - 从 BizTalk Server 2013 R2 开始,是的。 如果设置为 MultiFactorAuthentication ,则必须向 Username 提供其 PasswordPrivateKey。 此外,如果私钥受密码保护,则为 PrivateKeyPassword 属性指定密码。

- 对于 BizTalk Server 2013,可以使用 PasswordPublicKeyAuthentication。 BizTalk Server 2013 随附的 SFTP 适配器不支持 MultiFactorAuthentication
支持哪些私钥格式? 是否可以使用 OpenSSH 私钥格式? SFTP 适配器只支持 PuTTY 私钥文件格式。 可以使用 PuTTYgen 从 OpenSSH 转换为 .ppk 格式。
对于 SSHServerHostKeyFingerPrint,应使用哪种指纹算法和格式? 应采用以下格式使用服务器密钥的 MD5 指纹: ssh-rsa 2048 90:e4:9b:67:d9:22:a7:5f:6f:33:db:6a:b1:23:96:12
SFTP 适配器是否支持 256 位加密? 支持。SFTP 适配器支持 256 位加密。 支持的加密算法包括:

- AES 加密:256 位、192 位或 128 位 SDCTR 或 CBC

- 3DES (Triple-DES) 加密:168 位 SDCTR 或 CBC
适配器支持哪些 SSH 版本? 仅 SSH2。 不能与具有 SSH1 版本的 SFTP 服务器建立连接。
文件掩码是否区分大小写? 错误。 *.txt 和 *.TXT 的工作方式类似。 请安装 BizTalk Server 2013 的最新累积更新。 BizTalk Server 2013 RTM 版本具有区分大小写的文件掩码。
导出绑定提供了空密码字段。 在尝试通过导入这些绑定创建接收位置时,要进行的所有更改是什么? 通过编辑密码字段编辑绑定文件。 此外,在 中 <Password vt="1">MySecretPassword</Password>vt=“1” 指示 null 值。 将它更改为 vt=“8”,表示字符串。 例如:

<Password vt="8">MySecretPassword</Password>

有关详细信息,请参阅 https://msdn.microsoft.com/library/system.runtime.interopservices.varenum(v=vs.100).aspx
如何指定文件路径? 通常,路径以 格式 /folder/pathname指定。 但是,不同的服务器需要不同的格式,带或不带前导或尾随斜杠。 因此,你还可以进行以下尝试:

- /folder/pathname

- /folder/pathname/

- folder/pathname

- folder/pathname/