SSH Hosts

Your ssh config's hosts, one Enter from a terminal

palupdated 2026-10-27DeveloperIn pal's registry

Open in pal

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.

SSH Hosts: Hosts sectioned by the file they came from, user@host under each name, the port and a jump host as tags
Hosts sectioned by the file they came from, user@host under each name, the port and a jump host as tags
SSH Hosts: From the root, a host's real name finds its alias: example finds the four hosts under example.com
From the root, a host's real name finds its alias: example finds the four hosts under example.com
SSH Hosts: Connect on Enter; copy the host, the ssh command or its -J form through the jump host; ping
Connect on Enter; copy the host, the ssh command or its -J form through the jump host; ping
SSH Hosts: Ping sends one echo and shows the round trip as a toast
Ping sends one echo and shows the round trip as a toast
SSH Hosts: A host's detail (cmd+I): its name and file on top, the jump host as a chip, the ssh command, then HostName, User and Port
A host's detail (cmd+I): its name and file on top, the jump host as a chip, the ssh command, then HostName, User and Port
1 of 5

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/config and 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
  • enter opens a terminal running ssh, or runs a command you typed in the bar
  • cmd+shift+c copies the ssh command, cmd+shift+j the jump-host form for a machine without your config
  • cmd+p pings the host and shows the round trip
  • Optionally the hosts from known_hosts too

Palettes 1

  • SSH Hostssshlist

    Every 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]

config
~/.ssh/config path

The ssh config to read; Include lines in it are followed one level.

include_known_hosts
Off boolean

Only hosts you have connected to by name; hashed and numeric entries are skipped.

terminal
Auto select

Which 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 terminal setting. auto takes the first installed of kitty, Ghostty, Alacritty, iTerm2, Terminal (Terminal is always there, so it is the fallback). kitty gets kitty -1 ssh host (a new OS window in the running instance when that was started single-instance), Ghostty and Alacritty open -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) and Match blocks: they are not rows, though their settings still apply when ssh runs.
  • Nested includes: an Include inside 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.