fssh (Fast SSH) is an interactive SSH host selector written in Bash for ~/.ssh/config.
It is built for terminal-heavy workflows: fast host filtering, live reachability probes, weighted history, reconnect handling, and quick re-search after a session ends.
- Interactive host search from
~/.ssh/config fzfsupport with preview, auto-used when available- Fallback numbered menu when
fzfis not installed - History weighting so frequently used hosts float higher
- Session banner with current date/time, IP address, and internet status
- Detail mode with HostName/IP plus live host probe status
- Parallel reachability checks for faster status refresh
- Post-disconnect flow to list again, search another client, or quit
- Optional pre-ping before SSH connect attempt
- List-only mode for discovery without connecting
Copy the script into your path and make it executable:
sudo cp fssh /usr/bin/fssh
sudo chmod +x /usr/bin/fsshBasic search:
fssh jenkinsCase-insensitive search:
fssh -i jenShow all configured hosts:
fssh -aDetail mode with live probe status:
fssh -d sdetList only:
fssh -l jenkinsForce fzf:
fssh -f qaPre-ping before SSH:
fssh -p api| Flag | Description |
|---|---|
-i |
Case-insensitive search |
-l |
List matched hosts only |
-a |
Show all hosts |
-d |
Show HostName/IP and live status |
-f |
Force fzf mode |
-p |
Pre-ping host before SSH |
-h |
Show help |
============================================================
FSSH // FIELD SSH CONSOLE
[2026-03-16 13:45:22 WIB]
MODE : FILTER
QUERY : sdet
DETAIL : ENABLED
============================================================
:: SESSION
Current IP : 172.16.21.236
Internet : Connected
:: DISCOVERY // 2 MATCHED HOST(S)
1) jenkins-sdet-local (172.16.18.201) [PROBING]
2) jenkins-sdet-zt (10.90.1.2) [PROBING]
running parallel reachability probes...
:: PROBE RESULT // FINAL HOST STATUS
1) jenkins-sdet-local (172.16.18.201) [SSH-READY]
2) jenkins-sdet-zt (10.90.1.2) [NO-ROUTE]
fssh-select>
After disconnect from a successful SSH session, fssh can continue without restarting:
:: DISCONNECT
Target : jenkins-sdet-local
Timestamp : 2026-03-16 13:50:31 WIB
next-action [l=list, s=search, q=quit]>
If you choose s, you can immediately search another client:
client-search>
In detail mode, fssh probes hosts and shows one of these statuses:
SSH-READY: SSH port is reachablePORT-CLOSED: target is up but SSH port is closed/refusedNO-ROUTE: network path to target is unavailableTIMEOUT: target did not answer before timeoutDNS-FAIL: hostname resolution failedICMP-OK: ping responds, but SSH port was not confirmedUNREACHABLE: no successful probe resultPROBING: temporary status while background checks are running
- Bash
- A valid
~/.ssh/config - Optional:
fzffor fuzzy host selection - Optional:
ncfor fast SSH port probing - Optional:
pingfor ICMP checks and pre-ping mode
Host jenkins-sdet-local
HostName 172.16.18.201
User ubuntu
Host jenkins-sdet-zt
HostName 10.90.1.2
User root
- Host usage is stored in
~/.fssh_history - Host display order is influenced by prior successful connections
- The script reads hosts from
~/.ssh/config