> Documentation index: https://docs.kiste.run/llms.txt, a list of every page in this documentation.

# SSH configuration and editors

> Reach every Kiste as NAME.kiste from ssh, scp, rsync, VS Code, Cursor, JetBrains and other tools.

## It is set up when you sign in

`kiste login` writes an SSH entry for your Kisten into the CLI's configuration
directory and adds one managed `Include` line at the top of `~/.ssh/config`.
From then on every Kiste is reachable as `NAME.kiste`:

```bash
ssh review-42.kiste
scp notes.txt review-42.kiste:/workspace/
rsync -az ./site/ review-42.kiste:/var/www/site/
```

`kiste logout` removes both again. Nothing else in your `~/.ssh/config` is
changed, and a `~/.ssh/config` that is a link (into a dotfiles repository, say)
stays a link.

The entry covers the pattern `*.kiste`, so new and renamed Kisten work at once.
It connects through kiste.run like `kiste ssh`, with your device key and the
pinned host keys:

```text
Host *.kiste
  User root
  ProxyCommand "/Users/you/.local/bin/kiste" proxy -- '%n'
  IdentityFile "/Users/you/.config/kiste/ssh/id_ed25519"
  IdentitiesOnly yes
  UserKnownHostsFile "/Users/you/.config/kiste/ssh/known_hosts"
  StrictHostKeyChecking yes
  ServerAliveInterval 15
```

## Print it yourself

```bash
kiste ssh-config                 # the entry for *.kiste
kiste ssh-config review-42       # an entry for one Kiste only
kiste ssh-config >> ~/.ssh/config
```

Use this when you manage your SSH configuration by hand, on a computer where
the CLI runs with another configuration directory, or to see exactly what is
used.

## VS Code and Cursor

1. Install the **Remote - SSH** extension (Cursor ships it).
2. Run **Remote-SSH: Connect to Host…** and type `review-42.kiste`.
3. Open a folder, such as `/workspace`.

The editor's server runs inside the Kiste; your editor stays local.

## JetBrains IDEs

In JetBrains Gateway (or **Remote Development** in the IDE), choose **SSH**,
add a connection with host `review-42.kiste` and user `root`, and point it to
the key file shown above if it asks. Gateway uses your OpenSSH configuration,
including the proxy.

## Other tools

Anything that runs OpenSSH, or reads `~/.ssh/config`, works the same way:
Zed, Ansible, `git` with an `ssh://review-42.kiste/…` remote, Mutagen,
`docker -H ssh://review-42.kiste`. Tools with their own SSH implementation that
ignore `ProxyCommand` can't reach a Kiste this way; use
[port forwarding](https://docs.kiste.run/ssh/forward.md) for them.

## Related topics

- [Overview](https://docs.kiste.run/ssh.md)
- [Copy files](https://docs.kiste.run/ssh/files.md)
- [Port forwarding](https://docs.kiste.run/ssh/forward.md)
- [Device keys](https://docs.kiste.run/ssh/devices.md)
- [Run commands](https://docs.kiste.run/ssh/commands.md)
- [Coding agents and credentials](https://docs.kiste.run/ssh/agents.md)
- [Browser terminal](https://docs.kiste.run/ssh/browser-terminal.md)
- Previous: [Port forwarding](https://docs.kiste.run/ssh/forward.md)
- Next: [Device keys](https://docs.kiste.run/ssh/devices.md)
