Cluster SSH tool for Windows inspired by csshX
- Any SSH client (Windows 10 and Windows 11 already include a built-in SSH server and client - docs)
csshW will launch 1 daemon and N client windows (with N being the number of hosts to SSH onto).
Key-strokes performed while having the daemon console focussed will be sent to all clients simoultaneously and be replayed by them.
Focussing a client will cause any key-strokes to be sent to this client only.
csshW is a portable application and is not installed.
To download the csshW application refer to the Releases 📦 page.
csshw.exe --help
Cluster SSH tool for Windows inspired by csshX
Usage: csshw.exe [OPTIONS] [HOSTS]... [COMMAND]
Commands:
client Subcommand that will launch a single client window
daemon Subcommand that will launch the daemon window
help Print this message or the help of the given subcommand(s)
Arguments:
[HOSTS]...
Hosts and/or cluster tag(s) to connect to
Hosts or cluster tags might use brace expansion, but need to be properly quoted.
E.g.: `csshw.exe "host{1..3}" hostA`
Hosts can include a username which will take precedence over the username given via the `-u` option and over any ssh config value.
E.g.: `csshw.exe -u user3 user1@host1 userA@hostA host3`
Hosts can include a port number which will take precedence over the port given via the `-p` option.
E.g.: `csshw.exe -p 33 host1:11 host2:22 host3`
If no hosts are provided and the application is launched in a new console window (e.g. by double clicking the executable in the File Explorer), it will launch in interactive mode.
Options:
-u, --username <USERNAME>
Optional username used to connect to the hosts
-p, --port <PORT>
Optional port used for all SSH connections
-d, --debug
Enable extensive logging
-h, --help
Print help (see a summary with '-h')
-V, --version
Print versionExample:
csshw.exe -u root hosta.dev hostb.dev hostc.dev
We recommend using the ssh_config for any configurations like default username etc.
csshw-config.toml contains all relevant configurations and is located in the same directory as the executable.
It is automatically created with default values if not present.
An array of clusters that can be used to alias a set of host names to a specific tag:
clusters = [
{ name = "dev", hosts = ["hosta.dev", "[email protected]", "hostc.dev"] }
]Clusters may be nested, but be aware of recursive clusters which are not checked for.
A collection containing client relevant configuration
[client]
ssh_config_path = 'C:\Users\demo_user\.ssh\config'
program = 'ssh'
arguments = [
'-XY',
'{{USERNAME_AT_HOST}}',
]
username_host_placeholder = '{{USERNAME_AT_HOST}}'The full qualified path where your ssh configuration can be found.
Which executable will be used to establish ssh connections.
Additional arguments specified to the chosen program.
Placeholder string that indicates where the username@host string should be inserted in the program arguments.
A collection containing daemon relevant configuration
[daemon]
height = 200
aspect_ratio_adjustement = -1.0
console_color = 207The height of the daemon console.
Configures whether the available screen space should rather be used horizontally or vertically.
> 0.0- Aims for vertical rectangle shape. The larger the value, the more exaggerated the "verticality". Eventually the windows will all be columns.= 0.0- Aims for square shape.< 0.0- Aims for horizontal rectangle shape. The smaller the value, the more exaggerated the "horizontality". Eventually the windows will all be rows.-1.0is the sweetspot for mostly preserving a 16:9 ratio.
Configures background and foreground colors used by the daemon console. Available are all standard windows color combinations (windows docs):
FOREGROUND_BLUE: 1
FOREGROUND_GREEN: 2
FOREGROUND_RED: 4
FOREGROUND_INTENSITY: 8
BACKGROUND_BLUE: 16
BACKGROUND_GREEN: 32
BACKGROUND_RED: 64
BACKGROUND_INTENSITY: 128
e.g. white font on red background: 8+4+2+1+64+128 = 207
csshW uses pre-commit githooks to enforce good code style.
Install them via git config --local core.hooksPath .githooks/.
Step by step guide to create a new release:
cargo make prepare-releaseand follow the instructions- Create a pull request from the new maintenance branch to main OR cherry-pick the new Version change from the existing maintenance branch to main
cargo make releaseand follow the instructions- Revise the automatically created Release Draft and publish it
Footnotes
-
The searchbar used to launch csshw in the demo clip is keypirinha. ↩
-
The tool to show key presses in the demo clip is carnac the magnificent. ↩
-
The tool used to record the screen as GIF is ScreenToGif. ↩
