{"id":13542676,"url":"https://github.com/whme/csshw","last_synced_at":"2025-04-02T10:31:18.518Z","repository":{"id":183387076,"uuid":"405228278","full_name":"whme/csshw","owner":"whme","description":"Cluster SSH tool for Windows inspired by csshX","archived":false,"fork":false,"pushed_at":"2025-03-01T20:15:31.000Z","size":14386,"stargazers_count":10,"open_issues_count":1,"forks_count":2,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-01T20:41:20.030Z","etag":null,"topics":["ssh","windows"],"latest_commit_sha":null,"homepage":"https://whme.github.io/csshw/","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/whme.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-09-10T22:34:01.000Z","updated_at":"2025-03-01T20:15:35.000Z","dependencies_parsed_at":null,"dependency_job_id":"9b70b923-6e01-4003-92c6-e4c95d434ec2","html_url":"https://github.com/whme/csshw","commit_stats":null,"previous_names":["whme/csshw"],"tags_count":25,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/whme%2Fcsshw","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/whme%2Fcsshw/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/whme%2Fcsshw/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/whme%2Fcsshw/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/whme","download_url":"https://codeload.github.com/whme/csshw/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246796929,"owners_count":20835468,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ssh","windows"],"created_at":"2024-08-01T10:01:14.804Z","updated_at":"2025-04-02T10:31:18.508Z","avatar_url":"https://github.com/whme.png","language":"Rust","funding_links":[],"categories":["Rust","windows"],"sub_categories":[],"readme":"# csshW\n_Cluster SSH tool for Windows inspired by [csshX](https://github.com/brockgr/csshx)_\n\n![csshw demo](https://raw.githubusercontent.com/whme/csshw/refs/heads/main/demo/csshw.gif)[^1][^2][^3]\n\n[![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) [![CI](https://github.com/whme/csshw/actions/workflows/ci.yml/badge.svg)](https://github.com/whme/csshw/actions/workflows/ci.yml) [![Deploy Docs](https://github.com/whme/csshw/actions/workflows/deploy_docs.yml/badge.svg)](https://github.com/whme/csshw/actions/workflows/deploy_docs.yml)\n\n## Pre-requisite\n- Any SSH client (Windows 10 and Windows 11 already include a built-in SSH server and client - [docs](https://learn.microsoft.com/en-us/windows/terminal/tutorials/ssh))\n\n## Overview\ncsshW will launch 1 daemon and N client windows (with N being the number of hosts to SSH onto).\u003cbr\u003e\nKey-strokes performed while having the daemon console focussed will be sent to all clients simoultaneously and be replayed by them.\u003cbr\u003e\nFocussing a client will cause any key-strokes to be sent to this client only.\n\n## Download/Installation\ncsshW is a portable application and is not installed.\u003cbr\u003e\nTo download the csshW application refer to the [Releases 📦](https://github.com/whme/csshw/releases) page.\n\n## Usage\n\n```cmd\ncsshw.exe --help\nCluster SSH tool for Windows inspired by csshX\n\nUsage: csshw.exe [OPTIONS] [HOSTS]... [COMMAND]\n\nCommands:\n  client  Subcommand that will launch a single client window\n  daemon  Subcommand that will launch the daemon window\n  help    Print this message or the help of the given subcommand(s)\n\nArguments:\n  [HOSTS]...  Hosts to connect to\n\nOptions:\n  -u, --username \u003cUSERNAME\u003e  Optional username used to connect to the hosts\n  -d, --debug                Enable extensive logging\n  -h, --help                 Print help\n  -V, --version              Print version\n```\nExample:\n`csshw.exe -u root hosta.dev hostb.dev hostc.dev`\n\nWe recommend using the [ssh_config](https://linux.die.net/man/5/ssh_config) for any configurations like default username etc.\n\n### Configuration\n\n`csshw-config.toml` contains all relevant configurations and is located in the same directory as the executable.\nIt is automatically created with default values if not present.\n\n#### `clusters`\nAn array of clusters that can be used to alias a set of host names to a specific tag:\n```toml\nclusters = [\n    { name = \"dev\", hosts = [\"hosta.dev\", \"root@hostb.dev\", \"hostc.dev\"] }\n]\n```\nClusters may be nested, but be aware of recursive clusters which are not checked for.\n\n#### `client`\nA collection containing client relevant configuration\n``` toml\n[client]\nssh_config_path = 'C:\\Users\\demo_user\\.ssh\\config'\nprogram = 'ssh'\narguments = [\n    '-XY',\n    '{{USERNAME_AT_HOST}}',\n]\nusername_host_placeholder = '{{USERNAME_AT_HOST}}'\n```\n\n##### `ssh_config_path`\nThe full qualified path where your ssh configuration can be found.\n\n##### `program`\nWhich executable will be used to establish ssh connections.\n\n##### `arguments`\nAdditional arguments specified to the chosen program.\n\n##### `username_host_placeholder`\nPlaceholder string that indicates where the `username@host` string should be inserted in the program arguments.\n\n#### `daemon`\nA collection containing daemon relevant configuration\n``` toml\n[daemon]\nheight = 200\naspect_ratio_adjustement = -1.0\nconsole_color = 207\n```\n\n##### `height`\nThe height of the daemon console.\n\n##### `aspect_ratio_adjustment`\nConfigures whether the available screen space should rather be used horizontally or vertically.\n* `\u003e 0.0` - Aims for vertical rectangle shape.\n  The larger the value, the more exaggerated the \"verticality\".\n  Eventually the windows will all be columns.\n* `= 0.0` - Aims for square shape.\n* `\u003c 0.0` - Aims for horizontal rectangle shape.\n  The smaller the value, the more exaggerated the \"horizontality\".\n  Eventually the windows will all be rows.\n  `-1.0` is the sweetspot for mostly preserving a 16:9 ratio.\n\n##### `console_color`\nConfigures background and foreground colors used by the daemon console.\nAvailable are all standard windows color combinations ([windows docs](https://learn.microsoft.com/en-us/windows/console/console-screen-buffers#character-attributes)):\n```\nFOREGROUND_BLUE:        1\nFOREGROUND_GREEN:       2\nFOREGROUND_RED:         4\nFOREGROUND_INTENSITY:   8\nBACKGROUND_BLUE:        16\nBACKGROUND_GREEN:       32\nBACKGROUND_RED:         64\nBACKGROUND_INTENSITY:   128\n```\ne.g. white font on red background: 8+4+2+1+64+128 = `207`\n\n## Contributing\ncsshW uses pre-commit githooks to enforce good code style.\u003cbr\u003e\nInstall them via ``git config --local core.hooksPath .githooks/``.\n\n[^1]: The searchbar used to launch csshw in the demo clip is [keypirinha](https://keypirinha.com/).\n[^2]: The tool to show key presses in the demo clip is [carnac the magnificent](https://github.com/Code52/carnac).\n[^3]: The tool used to record the screen as GIF is [ScreenToGif](https://github.com/NickeManarin/ScreenToGif).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwhme%2Fcsshw","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwhme%2Fcsshw","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwhme%2Fcsshw/lists"}