SSH Manager (sshm)
SSH Manager (sshm) is a bash script that simplifies and automates the management of SSH hosts through the SSH configuration file (~/.ssh/config
). It provides functionalities to list, connect, view, add, edit, and delete SSH host configurations, check the availability of hosts using pings, and manage different SSH configuration contexts.
Features
- List all SSH hosts in the configuration file (with optional ping check).
- Connect to an SSH host by name or number from the list.
- View the configuration details of a specific SSH host.
- Add a new SSH host configuration.
- Edit an existing SSH host configuration.
- Delete an SSH host configuration.
- Check the availability of an SSH host using ping.
- Manage multiple SSH configuration contexts.
- Upgrade sshm to the latest version automatically.
Requirements
- Bash
- SSH
- awk
- sed
- ping
Installation
-
Clone the repository:
git clone https://github.com/Gu1llaum-3/sshm.git cd sshm
-
Make the script executable:
chmod +x sshm
-
Move the script to a directory in your PATH, for example:
sudo mv sshm.bash /usr/local/bin/sshm
Usage
List SSH Hosts
sshm list
To check host availability with ping (may be slower if hosts are unreachable):
sshm list --ping
Connect to an SSH Host
sshm <host>
You can also connect by selecting a number from the sshm list
output:
sshm list
# Select a number when prompted, e.g., type "1" to connect to the first host
View SSH Host Configuration
sshm view <host>
Add a New SSH Host Configuration
sshm add
The script will prompt you to enter the host details.
Edit an Existing SSH Host Configuration
sshm edit <host>
The script will prompt you to enter the new details for the host.
Delete an SSH Host Configuration
sshm delete <host>
Check SSH Host Availability
sshm ping <host>
Manage SSH Contexts
List Available Contexts
sshm context list
This will list all available SSH configuration contexts and highlight the currently active one.
Switch to a Different Context
sshm context use <context_name>
Switches the active SSH configuration to the specified context.
Create a New Context
sshm context create <context_name>
Creates a new SSH configuration context.
Delete a Context
sshm context delete <context_name>
Deletes the specified SSH configuration context.
Upgrade sshm
sshm upgrade
Automatically checks for the latest version on GitHub and upgrades sshm if a newer version is available. The script will:
- Check for updates from the GitHub repository
- Display the current and available versions
- Show the installation path (
/usr/local/bin/sshm
) - Ask for confirmation before proceeding
- Download and install the latest version
- Verify the installation
The upgrade will attempt to install to /usr/local/bin/sshm
(may require sudo), and fall back to ~/.local/bin/sshm
if needed.
Example
Listing and Connecting to SSH Hosts
# Quick list without ping check (fast)
sshm list
# List with availability check (slower if hosts are down)
sshm list --ping
Adding a New SSH Host
sshm add
You will be prompted to enter the following details:
- Host name
- HostName (IP address or domain)
- User (default: current user)
- Port (default: 22)
- IdentityFile (default:
~/.ssh/id_rsa
)
Editing an Existing SSH Host
sshm edit myhost
You will be prompted to update the details for the host myhost
.
Viewing a Host Configuration
sshm view myhost
Checking Host Availability
sshm ping myhost
Switching to a Different SSH Context
sshm context use myconfig
Switches to the myconfig
SSH configuration context.
Upgrading sshm
sshm upgrade
Checks for and installs the latest version of sshm. The command will show you the current version, the available version, and ask for confirmation before upgrading.
License
This project is licensed under the Apache License 2.0. See the LICENSE file for details.
Contributing
Contributions are welcome! Please open an issue or submit a pull request.
~/.ssh/config
). It provides functionalities to list, connect, view, add, edit, and delete SSH host configurations, as well as to check the availability of hosts using pings.