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

# ETL: SFTP Source

> How to connect to an SFTP server and configure the SFTP source component to read files in your Integrate.io ETL pipeline.

The SFTP source reads files from any Secure File Transfer Protocol (SFTP) server and feeds them into your pipeline. It supports CSV, TSV, JSON, Excel, Parquet, Raw, and compressed formats.

Once your connection is set up, see [File Storage Options](/docs/etl/file-storage-options) for the full set of read options (file formats, schema, and more) shared across every file storage provider.

## Connection Setup

To allow Integrate.io ETL direct access to your server, create firewall rules to allow inbound connections from the Integrate.io [IP address list](/docs/etl/integrateio-etls-ip-list). Alternatively, follow the directions for [SSH tunnel or reverse SSH tunnel access](/docs/etl/allowing-integrateio-etl-access-to-my-server-behind-a-firewall).

<Steps>
  <Step>
    Click the **Connections** icon (lightning bolt) in the top-left menu.
  </Step>

  <Step>
    Click **New connection**.

    <Frame>
      <img src="https://mintcdn.com/integrateio/V1Ns1A4dfxUcZVN3/images/connectivity-and-security/image-249.webp?fit=max&auto=format&n=V1Ns1A4dfxUcZVN3&q=85&s=e93d00111ac70c2acc851bda74979724" alt="New connection button in the Connections menu" width="1200" height="828" data-path="images/connectivity-and-security/image-249.webp" />
    </Frame>
  </Step>

  <Step>
    Select **Secure File Transfer Protocol (SFTP)**.

    <Frame>
      <img src="https://mintcdn.com/integrateio/V1Ns1A4dfxUcZVN3/images/connectivity-and-security/image-250.webp?fit=max&auto=format&n=V1Ns1A4dfxUcZVN3&q=85&s=ba07bcee9fae5e47bd27b39800234610" alt="Selecting SFTP from the connection type list" width="1200" height="828" data-path="images/connectivity-and-security/image-250.webp" />
    </Frame>
  </Step>

  <Step>
    Name the connection and fill in the connection details:

    | Field                     | Description                                                                                                                                                                                            |
    | :------------------------ | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
    | **Access type**           | Direct connection (requires firewall rules) or SSH tunnel. See the [IP list](/docs/etl/integrateio-etls-ip-list) and [firewall guide](/docs/etl/allowing-integrateio-etl-access-to-my-server-behind-a-firewall). |
    | **Hostname**              | The hostname of the SFTP server.                                                                                                                                                                       |
    | **Authentication Method** | Password or public key. For public key, copy your account's public key from **Settings > Account Settings > Profile** and add it to the SFTP user's `authorized_keys` file.                            |
    | **User Name**             | The username to connect with.                                                                                                                                                                          |
    | **Password**              | The password for password authentication. Cannot contain the `@` character.                                                                                                                            |
    | **Port**                  | TCP port of the SFTP server. Default is 22.                                                                                                                                                            |

    <Frame>
      <img src="https://mintcdn.com/integrateio/V1Ns1A4dfxUcZVN3/images/connectivity-and-security/image-251.webp?fit=max&auto=format&n=V1Ns1A4dfxUcZVN3&q=85&s=c8a4e71e0db3faf37e54d753872ddaba" alt="SFTP connection form with hostname, authentication, and port fields" width="1200" height="828" data-path="images/connectivity-and-security/image-251.webp" />
    </Frame>
  </Step>

  <Step>
    Click **Test connection** to verify the credentials.
  </Step>

  <Step>
    Click **Create SFTP connection**.

    <Frame>
      <img src="https://mintcdn.com/integrateio/V1Ns1A4dfxUcZVN3/images/connectivity-and-security/image-252.webp?fit=max&auto=format&n=V1Ns1A4dfxUcZVN3&q=85&s=462cc5f8829e9506eef8102c31da2a82" alt="Create SFTP connection button" width="1200" height="828" data-path="images/connectivity-and-security/image-252.webp" />
    </Frame>

    The connection appears in the connections list.

    <Frame>
      <img src="https://mintcdn.com/integrateio/V1Ns1A4dfxUcZVN3/images/connectivity-and-security/image-253.webp?fit=max&auto=format&n=V1Ns1A4dfxUcZVN3&q=85&s=71e5cf24b02518e9c6b82dfd5a0305cf" alt="SFTP connection created and listed in connections" width="1200" height="828" data-path="images/connectivity-and-security/image-253.webp" />
    </Frame>
  </Step>
</Steps>

***

## Source Configuration

### Connection

Select your SFTP connection from the dropdown, or create a new one using the steps above.

### Source Path

The path to the input file, folder, or pattern on the SFTP server. Paths must begin with `/`. Integrate.io prepends the slash automatically if omitted.

| Example                       | Description                         |
| :---------------------------- | :---------------------------------- |
| `/data/sales/2015/01/log.csv` | A single file                       |
| `/data/sales/2015/01/`        | All files in a folder               |
| `/data/sales/2015/{01,02}/`   | A pattern matching multiple folders |

You can use wildcard characters for [pattern globbing](/docs/etl/using-pattern-matching-in-source-component-paths). File and directory names beginning with an underscore (`_`) or a dot (`.`) are ignored.

<Note>
  SFTP has no bucket or container field. The path is relative to the SFTP server root.
</Note>

<Snippet file="snippets/file-storage-source-format.mdx" />

### Source Action

<Note>
  All four source actions are available for SFTP. When using **Move processed files**, the **Append string to filename** option is supported.
</Note>

<Snippet file="snippets/file-storage-source-action.mdx" />

<Snippet file="snippets/file-storage-source-tail.mdx" />

***

## FAQ

**How do I allow Integrate.io to connect to my SFTP server?**

Add the Integrate.io [IP addresses](/docs/etl/integrateio-etls-ip-list) to your server's firewall allowlist. If direct access is not possible, use an [SSH tunnel](/docs/etl/allowing-integrateio-etl-access-to-my-server-behind-a-firewall).

**Can I use SSH key authentication instead of a password?**

Yes. Select **Public key** as the authentication method, then copy your Integrate.io account's public key from **Settings > Account Settings > Profile** and add it to the SFTP user's `authorized_keys` file on the server.

**My password contains an @ symbol — what should I do?**

Passwords cannot contain `@` in the SFTP connection form. Contact your server administrator to change the password, or switch to public key authentication.

**Does SFTP support incremental load?**

Yes. Select **Process only new files (Incremental load)** in the source action settings and configure a manifest path. See [reading file storage data incrementally](/docs/etl/how-do-i-read-data-from-file-storage-incrementally).

***

## Related

<CardGroup cols={2}>
  <Card title="SFTP Destination" icon="arrow-right" href="/docs/etl/using-components-sftp-destination" horizontal />

  <Card title="File Storage Options" icon="arrow-right" href="/docs/etl/file-storage-options" horizontal />

  <Card title="Integrate.io IP Address List" icon="arrow-right" href="/docs/etl/integrateio-etls-ip-list" horizontal />

  <Card title="SSH Tunnel Access" icon="arrow-right" href="/docs/etl/allowing-integrateio-etl-access-to-my-server-behind-a-firewall" horizontal />

  <Card title="Reading File Storage Data Incrementally" icon="arrow-right" href="/docs/etl/how-do-i-read-data-from-file-storage-incrementally" horizontal />

  <Card title="SFTPtoGo" icon="arrow-right" href="/docs/etl/allowing-access-to-my-file-data-on-sftptogo" horizontal />
</CardGroup>
