> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kasoftware.com/llms.txt
> Use this file to discover all available pages before exploring further.

# FTP Server 端口

> FTP Server 端口的配置和使用指南，提供存取內建 FTP 伺服器的連線憑據。

FTP Server 端口提供了存取 知行之橋（全功能版本）FTP 伺服器的連線憑據。

## 核心功能

* 全功能內建 FTP 伺服器端，支援 FTPS (FTP over TLS/SSL)
* 多用戶端架構，具備獨立的個人配置檔案和目錄隔離功能
* 可為每個交易夥伴配置傳送與接收目錄的權限
* 支援歡迎標語、檔案過濾及臨時檔案處理，確保操作可靠
* 支援主動與被動模式，並可配置端口範圍

## 概觀

知行之橋 FTP 伺服器主要在[個人設定](https://docs.kasoftware.com/26.4/self-hosted/zh-Hant/getting-started/administration/profiles.md)頁面中進行配置。一個 FTP Server 端口提供了一個唯一的用戶端個人設定，以便向 FTP 伺服器進行身分驗證。用戶端個人設定由使用者名稱（與 FTP Server 端口的**端口 ID** 相同）、密碼、傳送目錄、接收目錄以及對目錄讀／寫的權限組成。

FTP 用戶端沒有被授予存取 FTP 伺服器根目錄的權限，這意味著 FTP 用戶端在連線後應該總是 *cd* 進入 Send（下載）和 Receive（上傳）目錄。

### 影片資源

觀看此短影片，瞭解如何配置 FTP 伺服器的概觀。影片範例中使用了 SFTP 伺服器，但 FTP 的原理是相同的。

[//player.bilibili.com/player.html?aid=743047147\&bvid=BV1Pk4y1K78m\&cid=1185850253\&page=1](//player.bilibili.com/player.html?aid=743047147\&bvid=BV1Pk4y1K78m\&cid=1185850253\&page=1)

## 個人設定

在與單個 FTP Server 端口建立連線之前，必須配置個人設定中的 FTP 伺服器。在導覽列中點選**個人設定**，然後開啟 **FTP Server** 頁面。

### 伺服器配置

*伺服器實現設定。*

| 設定 | 描述 |
| - | - |
| **端口** | FTP 伺服器將偵聽傳入連線的端口。 |
| **FTP Over TLS** | 當用戶端連線到伺服器時，應該如何協商 TLS／SSL。當設定為 "Explicit" 時，應首先建立明文連線，然後用顯式命令啟動 TLS／SSL。當設定為 "Implicit" 時，應立即協商 TLS／SSL，而無需首先建立明文連線。 |
| **伺服器 TLS 憑證** | 伺服器的 TLS 憑證。僅當伺服器作為 FTPS 伺服器執行時才需要（啟用了 TLS）。 |
| **憑證密碼** | 存取**伺服器 TLS 憑證**所需的密碼。 |
| **登入提示** | 連線到伺服器時要呈現給 FTP 用戶端的橫幅。 |
| **根目錄** | 伺服器的根目錄。將在單個用戶端個人設定的根目錄下建立子資料夾（即每個已配置的 FTP Server 端口）。每個用戶端個人設定都包括一個 Send 資料夾（用戶端可以從伺服器下載檔案）和一個 Receive 資料夾（用戶端可以將檔案上傳到伺服器）。 |
| **檔案過濾規則** | 一種全域模式，用於確定 FTP 伺服器接受哪種檔案。可以指定多個模式，用逗號分隔（例如，\*.X12，\*.edi），可以指定負模式來排除某些檔案模式（例如 -\*.txt）。 |

### 其它設定

*未包含在先前類別中的設定。*

| 設定 | 描述 |
| - | - |
| **主動模式** | 檢查此項以在遠端 FTP 伺服器上啟用主動模式。請注意，被動模式不太可能導致防火牆干擾連線。 |
| **空閒逾時** | 設定一個時間（秒）以判斷一個使用者是否活動。 |
| **被動模式端口範圍** | 使用被動模式時，應用程式使用任何可用端口來偵聽傳入的資料連線。這可以透過將此欄位設定為"開始-結束"格式的端口範圍來覆蓋，例如："1024-" 表示高於 1024（含 1024）的任何值，"1024-2048" 表示介於 1024 和 2048（含 1024 和 2048）之間的端口。 |
| **被動模式地址** | 當使用被動模式時，應用程式傳回本地介面的 IP 地址。這可以透過將該欄位設定為所需的公共 IP 地址來覆蓋。 |
| **啟用 TLS 協議** | 建立傳出連線時支援的 TLS/SSL 協議清單。最佳做法是僅使用 TLS 協議。SSL v2 和 SSL v3 被認為存在漏洞，僅在交易夥伴不支援更高版本時使用。請注意，TLS v1.3 尚未被普遍採用，如果目標伺服器不支援，可能會被拒絕。 |

#### 日誌

*用於管理日誌建立和儲存的設定。*

<table><thead><tr><th>設定</th>
<th>描述</th></tr></thead>
<tbody><tr><td>**日誌級別**</td>
<td>端口生成的日誌的詳細程度。當請求支援時，請將其設定為 **Debug**。</td></tr>
<tr><td>**日誌輪換間隔**</td>
<td>建立新日誌檔案之前等待的天數。</td></tr>
<tr><td>**日誌刪除間隔**</td>
<td>刪除舊日誌檔案之前等待的天數。</td></tr></tbody></table>

#### 其他設定

*特殊設定適用於特定用例。*

<table><thead><tr><th>設定</th>
<th>描述</th></tr></thead>
<tbody><tr><td>**其他設定**</td>
<td>允許在以分號分隔的清單中配置隱藏的端口設定，例如 `setting1=value1;setting2=value2`。正常的端口用例和功能不需要使用這些設定。</td></tr></tbody></table>

## 端口設定

在配置了 FTP 伺服器個人設定之後，可以在工作流程頁面中建立 FTP Server 端口，併為特定的交易夥伴進行配置。

### 設定

#### 配置

<table><thead><tr><th>設定</th>
<th>描述</th></tr></thead>
<tbody><tr><td>**端口 Id**</td>
<td>端口的靜態、唯一識別碼。</td></tr>
<tr><td>**端口型別**</td>
<td>顯示端口型別及其用途的描述。</td></tr>
<tr><td>**端口描述**</td>
<td>一個可選欄位，用於提供端口及其在流中的角色的自由格式描述。</td></tr></tbody></table>

#### 伺服器狀態

*端口底層服務的當前狀態。可用狀態如下：*

<table><thead><tr><th>狀態</th>
<th>描述</th></tr></thead>
<tbody><tr><td>**活動**</td>
<td>服務正在執行。</td></tr>
<tr><td>**非活動**</td>
<td>服務已配置，但當前未執行。</td></tr>
<tr><td>**未配置**</td>
<td>底層配置檔案或服務尚未設定。</td></tr></tbody></table>

根據是否已建立 FTP 配置檔案，點選**配置 FTP 配置檔案**或**檢視 FTP 配置檔案**連結，在新索引標籤中開啟該配置檔案。

#### 使用者配置

*用於向本地 FTP 伺服器進行身分驗證的憑據。*

| 設定 | 描述 |
| - | - |
| **使用者名稱** | 用於登入到本地 FTP 伺服器的使用者名稱憑據。該值始終與**端口 ID** 相同。 |
| **密碼** | 與**使用者名稱**關聯的密碼憑據。 |

#### 權限

*與配置的用戶端對傳送和接收資料夾的讀／寫權限相關的設定。*

| 設定 | 描述 |
| - | - |
| **傳送目錄權限** | 使用核取方塊設定 *Send* 目錄的讀／寫權限。這個資料夾是用戶端用來下載檔案的。 |
| **接收目錄權限** | 使用核取方塊設定 *Receive* 目錄的讀／寫權限。這個資料夾是用戶端用來上傳檔案的。 |

### 進階設定

#### 本地資料夾

*與用戶端上傳和下載檔案的資料夾相關的設定。*

| 設定 | 描述 |
| - | - |
| **Send 資料夾** | 用戶端可以下載位於 Send 資料夾中的檔案。 |
| **Receive 資料夾** | 用戶端上傳的檔案應該放在 Receive 資料夾中。檔案將保留在 Receive 資料夾中，或者傳遞到工作流程中下一個連線的端口。 |

#### 其它設定

*未包含在先前類別中的設定。*

| 設定 | 描述 |
| - | - |
| **主目錄** | 已配置的伺服器路徑，連線使用者登入後將從此路徑開始。有關有效位置以及路徑驗證方式，請參閱[主目錄](#主目錄)。 |
| **檔案過濾規則** | 一種全域模式，用於確定哪些檔案可以上傳到該使用者的目錄中。當需要為每個使用者指定過濾器時，覆蓋 FTP [個人設定](https://docs.kasoftware.com/26.4/self-hosted/zh-Hant/getting-started/administration/profiles.md)頁面中相同的設定。 |
| **傳送後刪除檔案** | 用戶端接收 Send 資料夾中的檔案後，是否應將其從資料夾中刪除。 |
| **臨時接收副檔名** | 可以匹配副檔名的檔案不會記錄在接收表中，並且在重新命名檔案之前不會觸發接收後事件。指定為逗號分隔的副檔名清單。 |
| **逾時時間** | 在引發逾時錯誤之前，伺服器等待連線回應的持續時間（秒）。 |
| **儲存 Subfolder** | 選中此項可將 Subfolder 訊息頭新增到收到的訊息中。此訊息頭表示相對於本地資料夾的路徑。 |
| **本地檔案命名規則** | 用於為端口輸出訊息分配檔名的規則。可以在檔名中使用宏動態包含識別碼和時間戳等資訊。更多資訊，請參見[宏](#宏)。 |

#### 訊息

*訊息設定確定端口如何搜尋訊息並在處理後管理它們。*

**注意：**以下設定已棄用，預設處於隱藏狀態。只有先前已啟用這些設定或將其配置為非預設值的端口才會顯示它們。若要保留成功處理的檔案副本，請在工作流程中右鍵單擊該端口，選擇**顯示成功路徑**，然後將成功路徑連線到 [File 端口](https://docs.kasoftware.com/26.4/self-hosted/zh/connectors/file.md)。

<table><thead><tr><th>設定</th><th>描述</th></tr></thead>
<tbody><tr><td>**儲存到已傳送資料夾**（已棄用）</td>
<td>將端口處理的檔案複製到 Sent 資料夾。預設停用。儲存到 Sent 資料夾中的檔案不受[靜態加密](https://docs.kasoftware.com/26.4/self-hosted/zh/getting-started/administration/settings/encryption-at-rest.md)保護。</td></tr>
<tr><td>**已傳送資料夾方案**（已棄用）</td>
<td>按所選時間間隔對 **Sent** 資料夾中的檔案進行分組。僅在啟用**儲存到已傳送資料夾**時適用。</td></tr></tbody></table>

#### 日誌

*用於管理日誌建立和儲存的設定。*

<table><thead><tr><th>設定</th>
<th>描述</th></tr></thead>
<tbody><tr><td>**日誌級別**</td>
<td>指定要記錄在端口日誌目錄中的資訊型別：
<ul><li>**None** - 不建立任何日誌。</li>
<li>**Error** - 僅當端口遇到錯誤時才建立日誌。</li>
<li>**Warning** - 僅當端口發出警告時才建立日誌。</li>
<li>**Info** - 記錄工作流程的一般資訊，包括任何錯誤和警告（如果適用）。</li>
<li>**Debug** - 記錄成功和失敗工作流程的詳細偵錯資訊。</li>
<li>**Trace** - 記錄成功和失敗工作流程的詳細跟蹤資訊。</li></ul>
\*\*請注意：\*\***Debug** 和 **Trace** 級別的日誌可能會記錄敏感資訊，包括訊息內容和 SSL 憑證。儘管連線屬性（例如密碼）被遮蔽了，但在與您的組織外部共享它們之前，請檢視此級別的日誌以避免洩漏敏感資訊。</td></tr>
<tr><td>**日誌資料夾結構**</td>
<td>指示端口根據選定的時間間隔將日誌資料夾中的檔案分組。例如，**Weekly** 選項指示端口每週建立一個新的子資料夾，並將該周的所有日誌儲存在該資料夾中。空白設定告訴端口將所有日誌直接儲存在日誌資料夾中。對於處理許多交易的端口，使用子資料夾有助於保持日誌的有序性並提高效能。</td></tr>
<tr><td>**保留訊息副本**</td>
<td>指示端口在日誌目錄中儲存最新訊息副本的切換。請注意，端口每個子資料夾只保留一個訊息，並且端口在再次執行時會覆蓋以前儲存的訊息。</td></tr></tbody></table>

#### 其他設定

*特殊設定適用於特定用例。*

<table><thead><tr><th>設定</th>
<th>描述</th></tr></thead>
<tbody><tr><td>**其他設定**</td>
<td>允許在以分號分隔的清單中配置隱藏的端口設定，例如 `setting1=value1;setting2=value2`。正常的端口用例和功能不需要使用這些設定。</td></tr></tbody></table>

### 告警索引標籤

*與配置通知相關的設定。*

在執行服務級別協議 (SLA) 之前，需要設定電子郵件通知以接收通知。預設情況下，知行之桥 使用 [通知](https://docs.kasoftware.com/26.4/self-hosted/zh/getting-started/administration/settings/alerts.md) 索引標籤上的全域設定。要為此端口使用其他設定，請啟用 **覆蓋全域設定**。

預設情況下，錯誤通知處於啟用狀態，這意味著每當出現錯誤時都會傳送電子郵件。要關閉錯誤通知，請取消選中 **啟用** 核取方塊。

輸入 **主題**（必填）。勾選**允許在主題中使用 ArcScript**，即可在**主題**欄位中使用 ArcScript。選中後會顯示 **ArcScript 編輯器**按鈕（![ArcScript 編輯器按鈕](https://docs.kasoftware.com/26.4/images/rest_arcscript_editor.png)）。

（可選）輸入以逗號分隔的**收件人**電子郵件地址清單。

### SLA 索引標籤

*與配置服務級別協議 (SLA) 相關的設定。*

SLA 允許配置預期流程中端口傳送或接收的資料量，並設定預期達到該資料量的時間範圍。當 SLA 未達到時，知行之桥 會傳送電子郵件警告使用者，並將 SLA 標記為 *存在風險*，這意味著如果 SLA 未能儘快達到，則會被標記為 *已違反*。這讓使用者有機會介入並確定 SLA 未達到的原因，並採取適當的措施。如果在風險時間段結束時仍未達到 SLA，則會將 SLA 標記為已違反，並再次通知使用者。

SLA 轉換為 *存在風險* 或 *已違反* 狀態時，也會寫入[應用程式日誌](https://docs.kasoftware.com/26.4/self-hosted/zh/getting-started/administration/activity.md#应用程序日志)，這意味著應用程式效能監控 (APM) 和日誌擷取工具也可以針對這些狀態發出警示。

要定義 SLA，請啟用 **預期資料量**，然後點選 **設定** 索引標籤。

![SLA Empty](https://docs.kasoftware.com/26.4/images/sla_empty.png)
<ul><li>如果端口具有單獨的傳送和接收操作，請使用選項按鈕指定 SLA 適用的方向。</li>
<li>在視窗的 **預計至少** 部分中：
<ul><li>設定預計處理的最小交易數量（交易量）</li>
<li>使用 **每個** 欄位指定時間範圍</li>
<li>指示 SLA 生效的時間。如果選擇 **開始於**，請填寫日期和時間欄位。</li>
<li>勾選希望 SLA 生效的星期幾對應的核取方塊。如有必要，請使用下拉功能表選擇 **每天**。</li></ul></li>
<li>在視窗的 **將狀態設定為“有風險”** 部分中，指定應將 SLA 標記為有風險的時間。
<ul><li>預設情況下，只有在違反 SLA 的情況下才會傳送通知。要更改此設定，請勾選 **傳送“有風險”通知**。</li></ul></li></ul>

以下範例顯示了為端口配置的 SLA，該端口預計在週一至週五每天接收 1000 個檔案。如果尚未收到 1000 個檔案，則會在時間段結束前 1 小時傳送風險通知。

![SLA Configuration Example](https://docs.kasoftware.com/26.4/images/sla_defined.png)

> [!NOTE]
>
> 如果有必要，可以關閉 SLA 通知。這在維護視窗期間非常有用。點選導覽列上的 **設定**，然後跳轉到 **通知 > 通用通知**。點選平板和鉛筆圖示進行編輯，並取消勾選 **SLA 通知** 設定。

## 主目錄

**主目錄**設定控制用戶端登入 FTP Server 端口後進入的初始資料夾。可在端口的**進階**索引標籤中，於**其它設定**下進行配置。當從允許配置登入目錄的其他 FTP 軟體移轉，或者自動化系統登入後不執行導航（`cd`）命令、直接在當前目錄上傳或下載時，此設定很有用。

該欄位預設為空，也接受伺服器路徑：

* \*\*空（預設）：\*\*用戶端進入虛擬根目錄 (`/`)。
* \*\*設定為路徑：\*\*登入成功後，用戶端的初始工作目錄為指定路徑。用戶端連線後如果不更改目錄便立即上傳、下載或列出檔案，將在主目錄內執行操作。

主目錄必須是以 `/` 開頭的伺服器路徑，相對於端口[配置檔案](#個人設定)中定義的**根目錄**解析，並且必須與已配置的伺服器位置匹配；不能設定為僅存在於磁碟上的任意路徑。FTP Server 端口的有效位置包括：

* `/`（虛擬根目錄）：欄位為空時的預設值，因此顯式設定為 `/` 不會產生額外效果
* `/Send`
* `/Receive`

該欄位會規範化輸入，因此 `Receive`、`/Receive`、`\Receive` 和 `/Receive/` 都被視為相同路徑。儲存端口時會驗證該值；如果路徑與已配置的伺服器位置不匹配，系統將顯示指出無效值的錯誤。

> [!NOTE]
>
> 主目錄只設定登入時的初始目錄。它不是 chroot 或隔離區，不會限制用戶端之後可導航到的資料夾；資料夾存取仍由[權限設定](#權限)控制。

## 建立連線

每個 FTP Server 端口代表一個交易夥伴的連線參數。交易夥伴應使用[個人設定](https://docs.kasoftware.com/26.4/self-hosted/zh-Hant/getting-started/administration/profiles.md)頁面中 FTP 伺服器的設定（端口、TLS 模式等）和 FTP Server 端口中的[使用者配置](#使用者配置)設定（使用者名稱、密碼）連線到 FTP 伺服器。

每個交易夥伴都有一對單獨的傳送和接收目錄，它們是根目錄的子資料夾。交易夥伴應該從 Send 資料夾下載檔案，並將檔案上傳到 Receive 資料夾。不允許用戶端從根目錄上傳或下載檔案。

## 宏

在檔案命名策略中使用宏可以提高組織效率和對資料的上下文理解。透過將宏合併到檔名中，可以動態地包含相關資訊，例如識別碼、時間戳和訊息頭資訊，從而為每個檔案提供有價值的上下文。這有助於確保檔名反映對組織重要的詳細資訊。

知行之桥 支援這些宏，它們都使用以下語法：`%Macro%`。

<table><thead><tr><th>宏</th><th>描述</th></tr></thead>
<tbody><tr><td>ConnectorID</td><td>替換為端口的 ConnectorID。</td></tr>
<tr><td>ConnectorName</td><td>替換為端口名稱。可用於在檔名或路徑中包含連線名稱，例如按生成備份檔案的資料庫連線標記檔案。</td></tr>
<tr><td>Ext</td><td>替換為端口當前正在處理的檔案的副檔名。</td></tr>
<tr><td>Filename</td><td>替換為端口當前正在處理的檔案的檔名（包括副檔名）。</td></tr>
<tr><td>FilenameNoExt</td><td>替換為端口當前正在處理的檔案的檔名（不帶副檔名）。</td></tr>
<tr><td>MessageId</td><td>計算端口輸出的訊息的 MessageId。</td></tr>
<tr><td>RegexFilename:*pattern*</td><td>將規則運算式模式應用於端口當前正在處理的檔案的檔名。</td></tr>
<tr><td>Header:*headername*</td><td>替換為端口正在處理的當前訊息的目標訊息頭（`headername`）的值。</td></tr>
<tr><td>LongDate</td><td>以常規格式計算系統的當前日期時間（例如，2024 年 1 月 24 日星期三）。</td></tr>
<tr><td>ShortDate</td><td>以 yyyy-MM-dd 格式計算系統的當前日期時間（例如 2024-01-24）。</td></tr>
<tr><td>DateFormat:*format*</td><td>以指定格式（`format`）計算系統的當前日期時間。有關可用的日期時間格式，請參閱 [範例日期格式](https://docs.kasoftware.com/26.4/self-hosted/zh/scripting/value-formatters/date-formatters.md#date-formats-with-literal-characters)。</td></tr>
<tr><td>Vault:*vaultitem*</td><td>計算指定保管庫專案的值。</td></tr></tbody></table>

### 範例

某些宏（例如 %Ext% 和 %ShortDate%）不需要參數，但其他宏則需要。所有帶有參數的宏都使用以下語法：`%Macro:argument%`

以下是帶有參數的宏的一些範例：

<ul><li>%Header:headername%：其中 `headername` 是訊息上訊息頭的名稱。</li>
<li>%Header:mycustomheader% 解析為輸入訊息上設定的 `mycustomheader` 訊息頭的值。</li>
<li>%Header:ponum% 解析為輸入訊息上設定的 `ponum` 訊息頭的值。</li>
<li>%RegexFilename:pattern%：其中 `pattern` 是規則運算式模式。例如，`%RegexFilename:^([\w][A-Za-z]+)%` 匹配並解析為檔名中的第一個單詞，並且不區分大小寫（`test_file.xml` 解析為 `test`）。</li>
<li>%Vault:vaultitem%：其中 `vaultitem` 是 [vault](https://docs.kasoftware.com/26.4/self-hosted/zh/getting-started/administration/settings/global-settings-vault.md) 中專案的名稱。例如，`%Vault:companyname%` 解析為儲存在保管庫中的 `companyname` 項的值。</li>
<li>%DateFormat:format%：其中 `format` 是可接受的日期格式（有關詳細資訊，請參閱 [範例日期格式](https://docs.kasoftware.com/26.4/self-hosted/zh/scripting/value-formatters/date-formatters.md#sample-date-formats)）。例如，`%DateFormat:yyyy-MM-dd-HH-mm-ss-fff%` 解析為檔案上的日期和時間戳。</li></ul>

還可以建立更復雜的宏，如以下範例所示：

<ul><li>將多個宏組合在一個檔名中：`%DateFormat:yyyy-MM-dd-HH-mm-ss-fff%%EXT%`</li>
<li>包括宏之外的文字：`MyFile_%DateFormat:yyyy-MM-dd-HH-mm-ss-fff%`</li>
<li>在宏中包含文字：`%DateFormat:'DateProcessed-'yyyy-MM-dd_'TimeProcessed-'HH-mm-ss%`</li></ul>

## 常見錯誤

### 錯誤：無法繫結指定端口：拒絕存取。

**原因**

這個錯誤會發生在託管 知行之橋 的處理程序沒有足夠權限在指定端口上建立監聽時。

> [!NOTE]
>
> 在某些情況下（例如 Linux 環境和在 Amazon AMI 中執行的託管例項），不能使用低於 1024 的端口。

**解決方案**

選擇其他端口，或將託管 知行之橋 的處理程序身份更改為具有繫結到該端口的權限的使用者。

Amazon AMI 託管版本的 知行之橋 使用 Ubuntu 作業系統，因此 知行軟件 建議您使用 *Uncomplicated Firewall*（UFW）管理端口權限問題。例如，在 知行之橋 中將 FTP Server 設定為在端口 8021 執行，並在作業系統層面使用 UFW 將端口 21 轉寄到 8021，如下所示：

```
ufw allow 21/tcp
ufw allow 8021/tcp
echo "
*nat
:PREROUTING ACCEPT [0:0]
-A PREROUTING -p tcp --dport 21 -j REDIRECT --to-port 8021
COMMIT" >> /etc/ufw/before.rules
```

如果您的環境使用不同的 Linux 作業系統，知行軟件 建議您繫結到限制範圍以上的端口（例如，FTP 流量的 8021）並使用 `iptables` 將所需端口上的傳入請求路由到允許的端口：

`iptables -t nat -I PREROUTING -p tcp --dport 21 -j REDIRECT --to-port 8021`


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.