A transparent SSH wrapper that adds regex, aliases, gateways, dynamic hostnames, and hooks to your SSH client.
assh is an advanced SSH configuration wrapper that extends the standard OpenSSH client with features like regex host matching, alias definitions, gateway chaining, and dynamic hostname resolution. It solves the problem of managing complex SSH configurations by providing a structured YAML-based configuration system with inheritance, includes, and event-driven hooks.
System administrators, DevOps engineers, and developers who manage multiple SSH hosts, especially in environments requiring bastion hosts, jump boxes, or complex network topologies.
Developers choose assh because it transparently enhances SSH with powerful configuration features without breaking compatibility with existing SSH-based tools. Its unique YAML configuration with inheritance and hooks provides maintainability and automation capabilities missing in standard SSH config files.
:computer: make your ssh client smarter
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Supports regex patterns like 'vm-*.school.com' for matching multiple hosts, enabling scalable configuration for dynamic environments such as cloud VMs or bulk host management.
Uses structured YAML configuration with templates and inheritance (e.g., 'Inherits: bart'), allowing reusable settings and reduced duplication compared to plain SSH config files.
Provides a clean syntax for chaining SSH connections through gateways, e.g., 'ssh hosta/hostb', abstracting away complex nested ProxyCommands and supporting fallback strategies.
Offers hooks for events like OnConnect and OnDisconnect with drivers (exec, write, notify), enabling automation such as desktop notifications, logging, or backups, as shown in the detailed examples.
Works seamlessly as a ProxyCommand wrapper with SSH, SCP, rsync, git, and other lib-ssh based tools without requiring changes to their usage, maintaining full compatibility.
Gateways functionality relies on OpenSSH's netcat mode; if unsupported or netcat/socat is missing, users must manually configure custom ProxyCommand, adding setup complexity as noted in troubleshooting.
For optimal use with regex patterns, assh requires aliasing ssh to its wrapper (e.g., in .bashrc), which can break existing scripts or tools expecting the standard ssh binary and adds an extra layer.
The notify driver for desktop notifications only supports Mac OS X and Linux, with no support for Windows or BSD, reducing utility in mixed OS environments and limiting automation options.
Automatically regenerates ~/.ssh/config, which might be intrusive in some workflows; disabling it requires manual commands like 'assh config build --no-automatic-rewrite', adding management overhead.