Import and export
Take over connections from OpenSSH, FileZilla, Cyberduck, WinSCP, PuTTY or a kaiport export with the import wizard, and export your connections as JSON.
The import wizard takes over connections from other programs: your OpenSSH configuration, FileZilla, Cyberduck, WinSCP, PuTTY and files exported from kaiport. You choose the sources and the individual connections, and kaiport recognizes the ones you already have. The export saves your connections to a JSON file – without passwords or keys. kaiport for iPhone and iPad reads the same file, so the export is also how you bring connections to your phone.
Open the import wizard
- On first start: if you have no saved connections yet and kaiport finds something to import – for example a
~/.ssh/config– it opens the wizard by itself. This happens only once. - In the start window: open the … menu next to New connection and choose Import …. As long as the list is empty, the welcome also has an Import … button.
- In the settings: Settings → Import, next to Import connections … click Import ….
The wizard has three steps: Sources, Selection and Done.
Step 1: Sources
The first step lists the sources available on your system, each with the path kaiport reads and a status:
| Status | Meaning |
|---|---|
| found | kaiport can read the list. The source is already ticked. |
| not found | Nothing at the usual place. Click Choose file … or Choose folder … to point kaiport to it. |
| no access | The file exists, but the system blocks access, for example macOS privacy protection for another app's folder. Choose the file or folder in the dialog to allow access. |
Tick the sources you want and click Next. Later closes the wizard.
Where kaiport looks
| Source | macOS | Windows | Linux |
|---|---|---|---|
| OpenSSH config (~/.ssh/config) | ~/.ssh/config | %USERPROFILE%\.ssh\config | ~/.ssh/config |
| FileZilla Site Manager | ~/.config/filezilla/sitemanager.xml | %APPDATA%\FileZilla\sitemanager.xml | ~/.config/filezilla/sitemanager.xml |
| Cyberduck bookmarks | The Bookmarks folder of Cyberduck, see below | – | – |
| WinSCP sessions | – | %APPDATA%\WinSCP.ini | – |
| PuTTY sessions | – | Not found automatically, see below | ~/.putty/sessions (a folder) |
| kaiport export (JSON) | Choose the file | Choose the file | Choose the file |
- Cyberduck is only offered on macOS. kaiport looks in
~/Library/Group Containers/G69SCX94XU.duck/Library/Application Support/duck/Bookmarksand in~/Library/Application Support/Cyberduck/Bookmarksand reads every.duckfile there. - WinSCP keeps its sessions either in
WinSCP.inior in the Windows registry. kaiport reads the INI file. If your sessions are in the registry, export the WinSCP configuration to an INI file and choose it with Choose file …. - PuTTY keeps its sessions in the registry on Windows, which kaiport doesn't read. You can choose a folder with PuTTY session files instead – one file per session, named after the session, as PuTTY stores them on Linux.
The Mac App Store version doesn't look in these places by itself. Choose ~/.ssh/config and the files of FileZilla, WinSCP, PuTTY or Cyberduck with Choose file … or Choose folder …; see The Mac App Store version.
Step 2: Selection
kaiport reads the chosen sources and lists what it found, grouped by source. Each entry shows the name, the address and the type, for example SSH or FTP / FTPS.
- Tick the connections you want. New connections are already ticked.
- Select all ticks every connection that doesn't exist yet; None clears the selection.
- Click Import 12 (the button shows the number) – or Back to change the sources.
Entries you already have are marked Already exists or Already exists as “Name” and can't be ticked. If a source couldn't be read, a note lists it with the reason, for example “Access denied. Pick the file or folder in the dialog to allow access.” If nothing was found at all, the step says so.
How kaiport recognizes duplicates
| Type | Counts as the same connection when |
|---|---|
| SSH, FTP / FTPS | Type, host, port and user name match. |
| S3 storage, Azure Blob | Endpoint, bucket or container, and access key ID or storage account match. |
| WebDAV | Server URL and user name match. |
What is taken over
| Source | What kaiport takes over |
|---|---|
| OpenSSH config | Each Host entry without wildcards becomes an SSH connection named after the alias, with HostName, Port, User, the first IdentityFile (then SSH key, otherwise SSH agent), ForwardAgent and ProxyJump. Values from Host * act as defaults. Match and Include are ignored. |
| FileZilla | SFTP (as SSH), FTP, FTPS explicit and implicit, S3, WebDAV and Azure sites with name, host, port, user, password, remote and local directory, and the comments as notes. |
| Cyberduck | SFTP (as SSH), FTP, FTPS, WebDAV, S3 (including Google Cloud Storage and Backblaze B2 bookmarks) and Azure, without passwords. |
| WinSCP | SFTP and SCP sessions (as SSH, with the key file if one is set), FTP and FTPS, WebDAV and S3, without passwords. |
| PuTTY | SSH sessions with host, port, user and key file. Other kinds such as serial or Telnet are skipped. |
| kaiport export | Everything the file contains, see Export connections. |
Every imported connection gets a tag named after its source – ssh-config, filezilla, cyberduck, winscp or putty – so you can find the new connections through the sidebar.
Passwords and keys
The wizard shows a note: passwords from FileZilla are taken over; Cyberduck, WinSCP and PuTTY store theirs encrypted, so kaiport can't read them. After the import:
- SSH connections without a key use SSH agent. If you log in with a password, open the connection with Edit, choose Password and enter it – or leave the field empty so that kaiport asks when connecting.
- FTP, S3, WebDAV and Azure connections need their password or key in the connection dialog, because kaiport doesn't ask for them when connecting.
- Key files from
IdentityFile, WinSCP or PuTTY are referenced by their path and read when you connect. To keep the key in kaiport's encrypted vault, click Choose in the connection dialog, see SSH key.
Jump hosts from ~/.ssh/config
When a host in ~/.ssh/config has a ProxyJump, kaiport links the new connection to its jump host after the import. It looks for a saved connection whose name or user@host matches the ProxyJump value – usually another Host alias from the same file. Import the jump host in the same run, or have it saved already. A ProxyJump with several hops, or one that matches no connection, is not linked; set the jump host in the Advanced tab instead.
Step 3: Done
The last step shows the result, for example “12 imported, 1 skipped.” Skipped are entries that turned out to be duplicates during the import, such as the same server from two sources. If you started the import from the connection list, the result also appears above the list. Click Close.
Export connections
- In the start window, open the … menu next to New connection and choose Export.
- Choose where to save the file. kaiport suggests a name like
kaiport-connections-2026-09-25.json.
The file contains all your connections:
{
"version": 1,
"connections": [
{
"type": "ssh",
"name": "web-01",
"host": "web-01.example.com",
"port": 22,
"username": "deploy",
"auth": "key",
"privateKeyPath": "/Users/anna/.ssh/id_ed25519",
"color": "#6c8cff",
"tags": ["prod", "web"],
"group": "Customers"
}
]
}| In the file | Not in the file |
|---|---|
| Type, name, host, port, user name and login method | Passwords and passphrases |
| Path of the key file | Private keys, S3 secret access keys and Azure access keys |
| Color, tags, group, favorite and notes | The jump host setting |
| Command after connecting, AI instructions and the lists of denied and allowed commands | When you last connected |
| Agent forwarding and port forwards | |
| FTP, S3, WebDAV and Azure settings and start directories |
Import a kaiport export
- Open the import wizard.
- At kaiport export (JSON), click Choose file … and select the file.
- Click Next, pick the connections and click Import.
Because the file has no credentials, enter passwords and keys again after the import, and set the jump hosts in the Advanced tab.