# SFTP

## Setup

The following credentials keys are accepted:

* `host` **(required)** -> The hostname / ip of the machine
* `user` **(required)** -> The username to access the machine
* `port` (optional. Default is `22`)
* `password` (optional) -> The password to access the machine
* `path` (optional, *v1.4.20*) -> The root path to use when connecting
* `private_key` (optional) -> This is the raw key string or the path to your SSH private key.
* `passphrase` (optional) -> The passphrase to use to access a SSH server.
* `ssh_tunnel` (optional since *v1.2.15*) -> The URL of the SSH server you would like to use as a tunnel (example `ssh://user:password@db.host:22`)
* `ssh_private_key` (optional since *v1.2.15*) -> The private key to use to access a SSH tunnel server (raw string or path to file).
* `ssh_passphrase` (optional since *v1.2.15*) -> The passphrase to use to access a SSH tunnel server.

### Using `sling conns`

Here are examples of setting a connection named `MY_SFTP`. We must provide the `type=sftp` property:

{% code overflow="wrap" %}

```bash
$ sling conns set MY_SFTP type=sftp host=<host> user=<user> password=<password> port=<port> private_key=<private_key>

# Or use url
$ sling conns set MY_SFTP url=sftp://myuser:mypass@host.ip:22 private_key=<private_key>
```

{% endcode %}

### Environment Variable

See [here](https://docs.slingdata.io/sling-cli/environment#dot-env-file-.env.sling) to learn more about the `.env.sling` file.

In JSON/YAML format:

{% code overflow="wrap" %}

```bash
export MY_SFTP='{type: sftp, url: "sftp://myuser:mypass@host.ip:22", private_key: <private_key>}'
export MY_SFTP_WITH_PATH='{type: sftp, url: "sftp://user:password@host.ip:22//absolute/path/to/dir"}'
```

{% endcode %}

### Sling Env File YAML

See [here](https://docs.slingdata.io/sling-cli/environment#sling-env-file-env.yaml) to learn more about the sling `env.yaml` file.

```yaml
connections:
  MY_SFTP:
    type: sftp
    host: <host>
    user: <user>
    port: <port>
    password: <password>
    private_key: <private_key>

  MY_SFTP_URL:
    url: "sftp://myuser:mypass@host.ip:22"
    private_key: <private_key>

  MY_SFTP_URL_PATH:
    url: "sftp://user:password@host.ip:22//absolute/path/to/dir"
```

If you are facing issues connecting, please reach out to us at <support@slingdata.io>, on [discord](https://discord.gg/q5xtaSNDvp) or open a Github Issue [here](https://github.com/slingdata-io/sling-cli/issues).
