SSH Hosts
Your ssh config's hosts, one Enter from a terminal
palupdated 2026-10-27DeveloperIn pal's registry
In pal's registry: the button shows it in pal, which asks before installing; the command does the same from a terminal. This page can't see what your pal has installed.





What it does
The hosts in your ssh config, one Enter from a terminal running ssh. Run a command on a host, copy the ssh command, or ping it.
- Every host in
~/.ssh/configand its included files, one section per file - Each row says user@address, with the port and the jump host as tags; its detail (
cmd+i) the same as a page enteropens a terminal running ssh, or runs a command you typed in the barcmd+shift+ccopies the ssh command,cmd+shift+jthe jump-host form for a machine without your configcmd+ppings the host and shows the round trip- Optionally the hosts from
known_hoststoo
Palettes 1
-
SSH Hosts
sshlistEvery Host in your ssh config, and what it connects to.
- ↵Connect in a terminal (a command typed in the bar runs there; blank is a shell)
- ⌘CCopy the host name
- ⌘⇧CCopy the ssh command
- ⌘⇧JCopy the ssh -J command (a ProxyJump host)
- ⌘PPing
Actions
- ConnectA terminal window running ssh <host>; the bar takes an optional command first (blank: a shell), run over ssh -t and kept open until Enter.↵
- Copy host⌘C
- Copy ssh commandssh <host>.⌘⇧C
- Copy ssh -J commandssh -J <jump> <host>, on a host with a ProxyJump.⌘⇧J
- PingOne echo to the HostName; the round trip as a toast.⌘P
Settings
Extension, [extensions.ssh]
configThe ssh config to read; Include lines in it are followed one level.
include_known_hostsOnly hosts you have connected to by name; hashed and numeric entries are skipped.
terminalWhich terminal Connect opens. Auto picks the first installed of kitty, Ghostty, Alacritty, iTerm2, Terminal. On Linux $TERMINAL, else kitty, foot, alacritty, xterm. One of auto, kitty, Terminal, iTerm2, Ghostty, Alacritty.
Defaults shown. Change them in pal's settings window or in the config file.
The README
Everything SSH Hosts does, key by key, from the extension's own README.md
SSH Hosts
Every Host in ~/.ssh/config that is a name rather than a pattern (*,
? and ! entries are skipped, a Host a b line gives two rows), in file
order. Include lines are followed one level: ~, absolute and globbed
operands work, a relative one is under ~/.ssh. A Match block ends the
current host. The section is the file a host came from, relative to the
config's directory (.ssh/config, .ssh/conf.d/work.conf).
The palette
The row is the host's name; user@HostName is the subtitle, and both are
keywords, so the real name finds the alias from the root; Port is a
:22-style tag. A host with ProxyJump carries a via <jump> tag and
the jump as a keyword. The detail pane (cmd+i) leads with the name, its
file and the jump host, then the command and the block's fields. The palette is indexed: listed
once, searched from the root, refreshed with cmd+r after the config
changes. A config with no named host lists one row saying so.
With include_known_hosts on, the names in ~/.ssh/known_hosts (next to
the config) come after, in a last Known hosts section: [host]:port
unwrapped, comma lists split, hashed lines, bare IPs and hosts already in
the config skipped.
Connect opens a terminal window running ssh <host> and hides the panel.
While the cursor is on a host the search bar shows one field after the
query, the command (Tab into it, Escape back); left blank, Enter connects
as before, and a command typed there runs as ssh -t <host> <command>
with the window kept until Enter, so a quick uptime is not gone with
it. A pick that arrives without the field (an item hotkey, a bare pal run) connects to a shell.
Ping sends one echo to the HostName (else the name) with a 2 s wait and
toasts the round trip (web-1.example.com: 3 ms), or why it did not
answer; the panel stays open.
Marked hosts (cmd-click, shift-click, shift+arrows) take every action: a terminal each for Connect, one line each for the copies, and one toast for the pings.
Keyboard
| keys | action |
|---|---|
enter |
Connect: a terminal window running ssh <host>; argument command (optional): run that there instead of a shell, the window kept until Enter |
cmd+c |
Copy host: the name as written in the config |
cmd+shift+c |
Copy ssh command: ssh <host> |
cmd+shift+j |
Copy ssh -J command: ssh -J <jump> <host> (only on a host with a ProxyJump) |
cmd+p |
Ping: one echo, the round trip as a toast |
cmd+r |
Refresh: read the config again |
The plain command already goes through the config's ProxyJump; the -J
form is for a machine that does not have your config.
Setup
An ~/.ssh/config with Host entries; ssh and ping on PATH. Nothing
else.
Which terminal Connect opens:
- macOS: the
terminalsetting.autotakes the first installed of kitty, Ghostty, Alacritty, iTerm2, Terminal (Terminal is always there, so it is the fallback). kitty getskitty -1 ssh host(a new OS window in the running instance when that was started single-instance), Ghostty and Alacrittyopen -na <app> --args -e ssh host, Terminal and iTerm2 an AppleScript that opens a window running the command, which asks for the Automation permission the first time. A terminal that is picked but not installed keeps the panel open with a toast. - Linux:
$TERMINAL, else the first of kitty, foot, alacritty, xterm on PATH; kitty and foot take the command as arguments, the others after-e.
Settings, [extensions.ssh]:
| key | type | default | what |
|---|---|---|---|
config |
path | ~/.ssh/config |
The config to read. ~ is expanded; known_hosts is looked for next to it. |
include_known_hosts |
bool | false |
List the names in known_hosts too, in a last section. |
terminal |
auto, kitty, Terminal, iTerm2, Ghostty, Alacritty |
auto |
macOS only: which terminal Connect opens. |
What it does not do
- Run ssh inside the panel: Connect hands the command to a terminal window and pal hides.
- Pattern hosts (
Host *.example.com) andMatchblocks: they are not rows, though their settings still apply when ssh runs. - Nested includes: an
Includeinside an included file is not followed. - Passwords, keys or agents: ssh's own business, in the terminal.
Platforms
macOS and Linux. The terminal is chosen per platform as above; ping's
wait flag is -W 2000 on macOS and -W 2 on Linux, the same one echo.