SSHsettings

SSH settings for slow links

Plain ssh zydra.sh works. On a slow or distant link, add these lines to ~/.ssh/config. On a test link with 160 ms round trips and 4 Mbit/s, each key showed up about 12 ms sooner, and a second login reached the desktop in 0.9 s instead of 1.7 s.

# OpenSSH before 9.5 skips the option below
Match all
  IgnoreUnknown ObscureKeystrokeTiming

Host zydra.sh
  # Send each key at once, no 20 ms beat
  ObscureKeystrokeTiming no
  # Later logins reuse this connection
  ControlMaster auto
  ControlPath ~/.ssh/cm-%C
  ControlPersist 10m
  # Drop a dead link after about a minute
  ServerAliveInterval 15
  ServerAliveCountMax 4

ObscureKeystrokeTiming no turns off OpenSSH's keystroke timing obfuscation, so someone watching the network can see your typing rhythm. Leave it out if that matters to you.

That option needs OpenSSH 9.5 or later. Older clients stop at any option they don't know, for every host, so the Match all lines tell them to skip it. ssh uses only the first IgnoreUnknown it reads. If your config already has one, add ObscureKeystrokeTiming to that line instead.

After switching keys or accounts, close the shared connection with ssh -O exit zydra.sh.

Using Kitty

kitten ssh zydra.sh shares one connection between logins from the same Kitty by itself, so you can skip the three Control lines. It still reads ~/.ssh/config.

On a Mac

Zydra's keys use Alt. Out of the box, Mac terminals make Option type characters instead (Option+Shift+Q gives Œ), so set Option to act as Alt:

  • Terminal.app: Settings > Profiles > Keyboard > Use Option as Meta key.
  • iTerm2: Settings > Profiles > Keys > Left Option key: Esc+.
  • Kitty: macos_option_as_alt left in kitty.conf.
  • Ghostty: macos-option-as-alt = left in its config.

Until then, Terminal.app and iTerm2 still open the menu with Option+Shift+Q and the overview with Option+Space.

Left out

  • Compression yes does nothing here. The server offers no SSH compression, and Zydra already compresses its pictures.
  • IPQoS lowdelay throughput makes things worse. OpenSSH 10.5 ignores those old names and drops the priority marking it gives interactive sessions by default.
CreditsOptimizing SSH