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

# SSH

> Mount a remote SSH host as a Mirage filesystem (Node only).

`SSHVFS` opens an SFTP session and mounts the remote root as a filesystem.

<Note>
  Node only. Requires the `ssh2` peer dependency. The browser SDK doesn't ship an SSH client.
</Note>

## Install

```bash theme={null}
pnpm add @struktoai/mirage-node ssh2
```

## Config

```ts theme={null}
import { MountMode, SSHVFS, Workspace } from '@struktoai/mirage-node'

const ssh = new SSHVFS({
  host: 'jump.example.com',
  username: 'me',
  identityFile: '~/.ssh/id_ed25519',
  root: '/srv/data',
})

const ws = new Workspace({ '/remote': ssh }, { mode: MountMode.READ })
await ws.shell('ls /remote')
```

| Field | Default | Notes |
| - | - | - |
| `host` | required | Host alias from `~/.ssh/config` or a real DNS name. |
| `hostname` | `host` | Override if `host` is an alias and the actual DNS name differs. |
| `port` | `22` | |
| `username` | (from ssh-config) | |
| `password` | none | Redacted in snapshots. Prefer `identityFile`. |
| `identityFile` | none | Path to a private key. `~` is expanded. |
| `passphrase` | none | Passphrase for `identityFile`. Redacted in snapshots. |
| `root` | `/` | Path on the remote that becomes the mount root. |
| `timeout` | `10000` | Connect timeout in ms. |
| `knownHosts` | system | Path to a `known_hosts` file. |

## Mount mode

`read`, `write`. Writes flush via SFTP put.

For the full set of supported shell commands and snapshot behavior see the [Python SSH docs](/python/vfs/ssh).


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