SFTP 端口
Version 26.2.9636
Version 26.2.9636
SFTP 端口
SFTP 端口可向远程 SFTP 服务器上传/下载文件。
核心功能
- 基于 SSH 的安全文件传输,支持公钥和密码认证
- 高级认证功能,包括基于证书的客户端认证
- 支持中断上传和下载的断点续传功能
- 高级 SSH 加密算法和服务器指纹(Thumbprint)验证
- 支持连接池和临时文件处理,确保传输可靠
- 可选缓存功能,确保仅下载新增或更新的文件
概述
SFTP 端口将上传文件到指定的文件夹,并从远程 SFTP 服务器上的一系列文件夹下载。
在知行之桥工作流中到达 SFTP 端口的文件被上传到目标文件夹,并且在下载目标文件夹中找到的文件被下载到知行之桥工作流中。端口支持上传和下载过滤规则,仅上传和下载指定的文件名和/或文件扩展名。
端口配置
本节包含所有可配置的端口属性。
设置
主机配置
建立与远程 SFTP 主机的连接相关的设置。
- 端口 Id 端口的静态、唯一标识符。
- 端口类型 显示端口类型及其用途的描述。
- 端口描述 一个可选字段,用于提供端口及其在流中的角色的自由格式描述。
- 远程主机 SFTP 服务器的主机名或 IP 地址。
- 远程主机端口 连接到 SFTP 服务器的端口。
客户端身份验证
与向 SFTP 服务器进行身份验证相关的设置。
- 身份验证模式 用于 SFTP 服务器的身份验证类型。
- 用户 登录 SFTP 服务器的用户名。
- 密码 登录 SFTP 服务器的密码。
- 客户端证书 在公钥身份验证期间使用的带有私钥的证书。仅当身份验证模式设置为公钥或多重身份验证时可用。 或者,你可以使用 创建证书 按钮创建新证书。
- 客户端证书密码 访问客户端证书所需的密码。
服务器端身份验证
与验证 SFTP 服务器身份相关的设置。
- 服务器指纹 标识 SFTP 服务器的证书指纹。这也可以设置为包含服务器公钥的证书文件。测试连接时,端口将提示接受/信任服务器提供的指纹。
上传
与文件上传到 SFTP 服务器相关的设置。
- 远程目录 端口处理的文件将上传到此指定的远程文件夹。
下载
与从 SFTP 服务器下载相关的设置。
- 远程目录 从中下载文件的远程文件夹。 使用逗号分隔列表指定多个路径。
- 文件掩码 确定应下载 远程路径 中的哪些文件的模糊匹配模式(例如,*.txt)。
- 删除文件(接收后) 选中此项以从 SFTP 服务器删除成功下载的文件。
缓存
与缓存和比较多次下载之间的文件相关的设置。
- 文件大小比较 选中此选项可记录下载的文件名和大小。 除非文件大小与上次下载的不同,否则将跳过以前下载的文件。
- 时间戳比较 选中此选项可保留下载文件名和上次修改时间戳的记录。 除非时间戳与上次下载的时间戳不同,否则将跳过以前下载的文件。
注意:
-
知行之桥 会自动清理资源缓存。此过程在每次接收周期的后台运行,删除远程服务器上已不存在的文件对应的过期缓存条目。这使得缓存大小始终保持在可管理范围内,无需任何手动操作。
默认情况下,文件保留 30 天,但您可以在高级选项卡的其他设置字段中使用
ResourceCacheRetentionDays设置来调整保留时间以适应您的环境。例如,ResourceCacheRetentionDays=15表示文件保留 15 天后将被删除。 -
启用缓存后,文件名不区分大小写。例如,端口无法区分
TEST.TXT和test.txt。
高级设置
服务器命令
这些选项允许你在端口执行期间的不同时间在目标服务器上执行自定义命令。
注意:虽然下面描述的命令是普遍接受的,但在尝试使用命令之前,请务必与目标服务器管理员核实,以确保服务器可以接受该命令。
- After Connect 连接后直接执行此命令。
- After Get 下载每个文件后执行此命令。
- After Put 上传每个文件后执行此命令。
- Before Get 在下载每个文件之前执行此命令。
- Before Put 在上传每个文件之前执行此命令。
以下是当将以下命令包含在上述字段中时可以提交给目标服务器的命令:
onerror:传递fail参数以指示端口将来自自定义脚本的错误视为整个事务的错误。 如果没有fail,端口会记录任何异常并继续处理。cd: 改变目录。mkdir: 创建目录。rn或move:重命名或移动文件。del或rm:删除或删除文件。rmdir: 删除目录。
知行之桥通过这些命令支持以下宏。 它们都使用以下语法:%Macro%。 某些宏,例如%Date%和%SourceFilename%,不需要参数,但其他宏则需要。 带参数的宏使用以下语法:%Macro:argument%。
| 宏 | 描述 |
|---|---|
| MsgHeader:headername | 计算消息的消息头值(例如:%MsgHeader:headername%)。 |
| SourceFilename | 计算当前正在处理的文件的文件名(包括扩展名)。 |
| SourceFilenameNoExt | 计算当前正在处理的文件的文件名(不带扩展名)。 |
| Date | 以 yyyy-MM-dd 格式计算文件的上次修改日期(例如 2024-02-13)。 |
| DateTime | 计算文件上次修改的日期时间,格式为 yyyy-MM-dd’T’HH:mm:ss zzz(例如 2024-02-13T08:14:22 CST)。 |
| DateTime.tz | Evaluates to the datetime the file was last modified in a yyyy-MM-dd’T’HH:mm:ss zzz format (for example, 2024-02-13T08:14:22 PST). |
| Time.tz | 以 HH:mm:ss zzz 格式计算文件的上次修改时间(例如 08:14:22 CST)。 |
| DateFormat:format | 以指定格式(format)计算系统的当前日期时间。 有关可用的日期时间格式,请参阅示例日期格式。 |
示例:下载后,希望将每个文件从下载文件夹移动到历史记录子文件夹。 使用 After Get 字段为move命令提供%SourceFilename%宏。

服务器命令
一组任意 SFTP 命令,可在在端口执行期间的不同时间在远程服务器上执行:连接后(After Connect)、下载后(After Get)、上传后(After Put)、下载前(Before Get)以及上传前(Before Put)。
高级设置
设置不包括在以前的类别中。
- 连接池 勾选此项让端口使用一个池来访问和存储连接。 这在服务器限制登录尝试频率的情况下很有用。
- 下载排除的扩展名 端口不应下载的文件扩展名的逗号分隔列表。
- 下载排除的前缀 以逗号分隔的前缀列表,指示端口不要下载以指定前缀开头的文件名。
- 最小文件大小 在一个轮询间隔内从 SFTP 服务器下载的最大文件数。 设置为 -1 以允许下载所有文件。
- 最小文件大小 要处理的最小文件大小(以字节为单位)。 如果正在上传的文件小于指定大小,则最终确定为 Skipped。 对于正在下载的文件,端口会添加一个事务日志条目,指示该文件因其大小而被跳过。
- 最大文件大小 要处理的最大文件大小(以字节为单位)。 如果正在上传的文件大于指定大小,则最终确定为 Skipped。 对于正在下载的文件,端口会添加一个事务日志条目,指示该文件因其大小而被跳过。
- 监控文件增长选中此选项可让应用程序在轮询间隔之间存储远程文件的文件大小,并且仅下载大小不变的文件。 这可以防止端口下载仍在服务器上写入过程中的文件。
- 递归选中此项以下载目标远程路径的子文件夹中的文件。 为接收到的文件保留子目录。
- 恢复下载 如果启用,当文件下载期间发生错误时,端口会存储已下载的文件部分,并在下次尝试下载时尝试下载文件的其余部分。
- 恢复上传 如果启用,当文件上传期间发生错误时,端口会记录已传输的字节数,并尝试在下一次上传尝试时上传文件的剩余部分。
- SSH 加密算法 SSH 加密期间使用的以逗号分隔的算法列表。 默认情况下,启用所有算法。 知行之桥 支持以下算法:
aes256-ctr, aes256-cbc, aes192-ctr, aes192-cbc, aes128-ctr, aes128-cbc, 3des-ctr, 3des-cbc, cast128-cbc, blowfish-cbc, arcfour, arcfour128, arcfour256, aes128-gcm@openssh.com, aes256-gcm@openssh.com, chacha20-poly1305@openssh.com - 本地文件名格式 用于为端口输出的消息分配文件名的方案。 可以在文件名中动态使用宏来包含标识符和时间戳等信息。 有关详细信息,请参阅宏。
- 接收过滤器 一个 glob 模式过滤器,用于确定应从远程存储(例如,*.txt)下载哪些文件。 你可以使用否定模式来指示不应下载的文件(例如,-*.tmp)。 当你需要多个 File Mask 模式时使用此设置。 多个模式可以用逗号分隔,后面的过滤器优先,除非找到完全匹配。
- 临时下载扩展名 在传输过程中附加到文件下载的临时文件扩展名。
- 临时上传扩展名 在传输过程中附加到文件上传的临时文件扩展名。
- 临时上传前缀 一个临时文件前缀,用于在传输过程中添加到文件上传。
- 临时上传路径 上传文件的远程 SFTP 服务器上的临时路径。 传输完成后,文件将移至永久上传路径。
- 超时 端口在抛出超时错误之前等待连接响应的持续时间。
- 等待通道关闭 勾选此项让端口在断开之前等待服务器关闭 SSH 通道。 如果在注销序列期间发生超时,你应该禁用此设置。
- 使用 GMT 文件时间 选中此项可让端口将文件时间戳读取为 GMT 时间,并使用该时间与本地缓存进行比较。 如果不选中此项,则来自服务器的时间戳在用于时间比较之前会被转换为本地时间。
- 延迟处理 放置在输入文件夹中的文件的处理延迟的时间量(以秒为单位)。 这是一个遗留设置。 最佳实践是使用 File 端口 来管理本地文件系统,而不是此设置。
代理设置
这些是一组设置,用于识别代理并向代理进行身份验证,SFTP 连接应通过该代理进行路由。 默认情况,下此部分在 安全设置 页面的 代理设置。 清除复选框以提供特定于你的 SFTP 端口的设置。
- 代理类型 基于代理的防火墙使用的协议。
- 代理主机 基于代理的防火墙的名称或 IP 地址。
- 代理端口 基于代理的防火墙的 TCP 端口。
- 代理用户 用于通过基于代理的防火墙进行身份验证的用户名。
- 代理密码 用于对基于代理的防火墙进行身份验证的密码。
- 身份验证方案 保留默认值 None 或选择以下身份验证方案之一:Basic、Digest、Proprietary或NTLM。
消息
- 保存至 Sent 文件夹 选中此选项可将端口处理的文件复制到端口的已发送文件夹中。
- 已发送文件夹方案 指示端口根据选定的时间间隔对已发送文件夹中的消息进行分组。 例如,Weekly 选项指示端口每周创建一个新的子文件夹,并将该周的所有消息存储在该文件夹中。 空白设置告诉端口将所有消息直接保存在“已发送”文件夹中。 对于处理许多消息的端口,使用子文件夹有助于保持消息的组织性并提高性能。
日志
- 日志级别 端口生成的日志的详细程度。 当你请求支持时,将其设置为 Debug。
- 日志子文件夹方案:指示端口根据所选的时间间隔对日志(Logs)文件夹中的文件进行分组。每周(Weekly)选项(默认设置)指示端口每周创建一个新子文件夹,并将该周的所有日志存储在其中。如果此设置留空,则端口将所有日志直接保存在日志文件夹中。对于处理大量事务的端口,使用子文件夹有助于保持日志井然有序并提高性能。
- 保留消息副本 勾选此项,使已处理文件的日志条目包含文件本身的副本。 如果禁用此功能,你可能无法从事务选项卡下载文件副本。
特殊设置
特殊设置 适用于特定用例。
- 其他设置 允许在以分号分隔的列表中配置隐藏的端口设置,例如
setting1=value1;setting2=value2。 正常的端口用例和功能不需要使用这些设置。
自动化
自动化设置
与端口自动处理文件相关的设置。
- 上传 到达端口的文件是否会自动上传。
- 重试间隔 再次发送文件之前等待的时长。
- 最大重试次数 端口处理输入文件的最大次数。是否成功基于服务器相应和回执的验证(如需要回执)。如果设置为 0,那么端口将无限次尝试处理失败文件。
- 下载 端口是否要自动轮询远程下载目录。
- 间隔 自动下载尝试的间隔时间。
- 分 每次执行等待的分钟数。仅当执行间隔被设置为 Minute 时适用。
- 第几分钟/小时 每小时计划的分钟偏移量。仅当执行间隔被设置为 Hourly 时适用。例如,如果将此值设置为 5,将在 1:05、2:05、3:05 自动执行脚本。
- 时 在指定的某一天内进行消息处理的时间。仅当执行间隔被设置为 Daily 或 Weekly 或 Monthly 时适用。
- 天 进行消息处理的某一天。仅当执行间隔被设置为 Weekly 或 Monthly 时适用。
- Cron 表达式 表示 cron 表达式的任意字符串,用于确定何时执行。仅当执行间隔被设置为 Advanced 时适用。
性能
与端口资源分配相关的设置。
- 最大工作线程数 此端口上处理文件时从线程池中消耗的最大工作线程数。如果设置,则会覆盖 高级设置 页面的 性能设置 部分的默认设置。
- 最大文件数 分配给端口的每个线程发送的最大文件数。如果设置,则会覆盖 高级设置 页面的 性能设置 部分的默认设置。
通知选项卡
与配置通知相关的设置。
在执行服务级别协议 (SLA) 之前,需要设置电子邮件通知以接收通知。默认情况下,知行之桥使用 通知 选项卡上的全局设置。要为此端口使用其他设置,请启用覆盖全局设置。
默认情况下,错误通知处于启用状态,这意味着每当出现错误时都会发送电子邮件。要关闭错误通知,请取消选中启用复选框。
输入主题(必填),然后(可选)输入以逗号分隔的收件人电子邮件列表。
SLA 选项卡
与配置服务级别协议 (SLA) 相关的设置。
SLA 允许配置预期流程中端口发送或接收的数据量,并设置预期达到该数据量的时间范围。当 SLA 未达到时,知行之桥会发送电子邮件警告用户,并将 SLA 标记为_存在风险_,这意味着如果 SLA 未能尽快达到,则会被标记为_已违反_。这让用户有机会介入并确定 SLA 未达到的原因,并采取适当的措施。如果在风险时间段结束时仍未达到 SLA,则会将 SLA 标记为_已违反_,并再次通知用户。
要定义 SLA,请启用预期数据量,然后点击设置选项卡。

- 如果端口具有单独的发送和接收操作,请使用单选按钮指定 SLA 适用的方向。
- 在窗口的预计至少部分中:
- 设置预计处理的最小事务数量(交易量)
- 使用每个字段指定时间范围
- 指示 SLA 生效的时间。如果选择开始于,请填写日期和时间字段。
- 勾选希望 SLA 生效的星期几对应的复选框。如有必要,请使用下拉菜单选择每天。
- 在窗口的将状态设置为“有风险”部分中,指定应将 SLA 标记为有风险的时间。
- 默认情况下,只有在违反 SLA 的情况下才会发送通知。要更改此设置,请勾选发送“有风险”通知。
以下示例显示了为端口配置的 SLA,该端口预计在周一至周五每天接收 1000 个文件。如果尚未收到 1000 个文件,则会在时间段结束前 1 小时发送风险通知。

注意:如果有必要,可以关闭 SLA 通知。这在维护窗口期间非常有用。点击导航栏上的设置,然后跳转到通知 > 通用通知。点击平板和铅笔图标进行编辑,并取消勾选 SLA 通知设置。
建立连接
连接到远程 SFTP 服务器需要以下设置:
- 远程主机
- 远程主机端口
- 认证模式
- 用户
- 密码或客户端证书/证书密码
- 服务器指纹
测试与服务器的连接时,端口将提示接受/信任服务器公钥的指纹。
上传文件
SFTP 端口从事务选项卡上传文件。如果端口启用了上传自动化功能,文件将自动上传到 SFTP 服务器。
远程目录应设置为远程 SFTP 服务器上应上传文件的文件夹。登录到服务器后,应用程序会将目录更改到指定的文件夹。
如果有任何文件无法上传,端口会在重试间隔分钟后尝试发送这些文件。此过程将继续,直到达到最大重试次数设置,之后端口将引发错误,文件将不再自动发送。
下载文件
下载的文件显示在端口的事务选项卡中,或者发送到工作流中的下一个端口。如果端口中启用了自动下载功能,文件将自动从 SFTP 服务器上下载,并且可以通过单击事务选项卡中的接收按钮手动下载。
远程目录应设置为远程 SFTP 服务器上的文件夹,文件应从该文件夹下载。登录到服务器后,应用程序会将目录更改到指定的文件夹。文件掩码属性过滤文件,以便只从服务器下载与全局模式匹配的文件名。
删除文件(下载后)设置可用于在成功下载文件后删除远程服务器上的文件。在事务选项卡中,单击接收以测试这些设置,并从服务器中检索匹配的文件。
子目录消息头
如果 递归 被选择,SFTP 端口从 远程目录 接收文件:
- 收到的文件消息将在其元数据中包含子目录消息头。
- 这个消息头包含子目录,其相对于配置的 远程目录。
- 这个子目录消息可以被其它支持其的发送端口所识别和支持。
当发送文件时,子目录消息头会在发送文件到 远程目录 时保留:
- 文件将会被放在此子目录中,其相对于配置的远程目录。
- 如果文件不存在并且有权限的话,子目录会被自动创建。
宏
在文件命名策略中使用宏可以提高组织效率和对数据的上下文理解。 通过将宏合并到文件名中,可以动态地包含相关信息,例如标识符、时间戳和消息头信息,从而为每个文件提供有价值的上下文。 这有助于确保文件名反映对组织重要的详细信息。
知行之桥 支持这些宏,它们都使用以下语法:%Macro%。
| 宏 | 描述 |
|---|---|
| ConnectorID | 替换为端口的 ConnectorID。 |
| Ext | 替换为端口当前正在处理的文件的文件扩展名。 |
| Filename | 替换为端口当前正在处理的文件的文件名(包括扩展名)。 |
| FilenameNoExt | 替换为端口当前正在处理的文件的文件名(不带扩展名)。 |
| MessageId | 计算端口输出的消息的 MessageId。 |
| RegexFilename:pattern | 将正则表达式模式应用于端口当前正在处理的文件的文件名。 |
| Header:headername | 替换为端口正在处理的当前消息的目标消息头 (headername) 的值。 |
| LongDate | 以常规格式计算系统的当前日期时间(例如,2024 年 1 月 24 日星期三)。 |
| ShortDate | 以 yyyy-MM-dd 格式计算系统的当前日期时间(例如 2024-01-24)。 |
| DateFormat:format | 以指定格式(format)计算系统的当前日期时间。 有关可用的日期时间格式,请参阅示例日期格式 |
| Vault:vaultitem | 计算指定保管库项目的值。 |
示例
某些宏(例如 %Ext% 和 %ShortDate%)不需要参数,但其他宏则需要。 所有带有参数的宏都使用以下语法:%Macro:argument%
以下是带有参数的宏的一些示例:
- %Header:headername%:其中
headername是消息上消息头的名称。 - %Header:mycustomheader% 解析为输入消息上设置的
mycustomheader消息头的值。 - %Header:ponum% 解析为输入消息上设置的
ponum消息头的值。 - %RegexFilename:pattern%:其中“pattern”是正则表达式模式。 例如,
%RegexFilename:^([\w][A-Za-z]+)%匹配并解析为文件名中的第一个单词,并且不区分大小写(test_file.xml解析为test) 。 - %Vault:vaultitem%:其中
vaultitem是 vault 中项目的名称。 例如,%Vault:companyname%解析为存储在保管库中的companyname项的值。 - %DateFormat:format%:其中
format是可接受的日期格式(有关详细信息,请参阅示例日期格式)。 例如,%DateFormat:yyyy-MM-dd-HH-mm-ss-fff%解析为文件上的日期和时间戳。
还可以创建更复杂的宏,如以下示例所示:
- 将多个宏组合在一个文件名中:
%DateFormat:yyyy-MM-dd-HH-mm-ss-fff%%EXT% - 包括宏之外的文本:
MyFile_%DateFormat:yyyy-MM-dd-HH-mm-ss-fff% - 在宏中包含文本:
%DateFormat:'DateProcessed-'yyyy-MM-dd_'TimeProcessed-'HH-mm-ss%