A tool for parsing and displaying SSH connection history
Project description
SSH Shortcut Manager
SSH Shortcut Manager is a Python-based tool to manage and connect to SSH sessions using shortcuts. It supports both interactive and command-line modes, allowing you to assign shortcuts to SSH commands and use them directly in your terminal. The tool automatically adds these shortcuts as aliases in your shell (~/.bashrc and ~/.zshrc), making them available across sessions.
Features
-
Interactive Mode:
- Search and filter SSH connections.
- Assign or edit shortcuts for SSH sessions.
- Directly connect to SSH sessions from the interactive UI.
-
Command-Line Mode:
- Use shortcuts directly from the terminal (e.g.,
sshmgm --shortcut tp-1).
- Use shortcuts directly from the terminal (e.g.,
-
Shell Alias Management:
- Automatically creates or updates aliases in
~/.bashrcand~/.zshrc. - Ensures the aliases persist across sessions.
- Automatically creates or updates aliases in
-
Dynamic Management:
- Prevents duplicate shortcuts.
- Replaces existing shortcuts in shell configurations.
Installation
Prerequisites
- Python 3.7 or higher
- Pip (Python package manager)
- Bash or Zsh shell
Steps
-
Clone the repository:
git clone https://github.com/htayanloo/SSH-Manager.git cd SSH-Manager
-
Install the package:
pip install .
-
Verify the installation:
sshmgm --help
Usage
Interactive Mode
Run the tool interactively:
sshmgm
Features in Interactive Mode
- Search (s): Search for SSH connections by keywords.
- Select (number): Select an SSH connection to connect or edit its shortcut.
- Shortcut (sc): Directly connect using a shortcut.
- Back (b): Return to the full list.
- Quit (q): Exit the tool.
Shortcut Options
- Connect (c): Start an SSH session for the selected item.
- Set Shortcut (ss): Assign or update a shortcut for the selected session.
Command-Line Mode
Run the tool with a shortcut directly from the terminal:
sshmgm --shortcut <shortcut>
Example:
sshmgm --shortcut tp-1
Shell Alias Management
When you assign a shortcut, the tool automatically creates or updates an alias in your shell configuration files (~/.bashrc and ~/.zshrc).
-
Example alias added to
~/.bashrcand~/.zshrc:alias tp-1='ssh user@192.168.1.1'
-
Run the alias directly in the terminal:
tp-1
The tool ensures existing aliases are replaced and configurations are reloaded, making the shortcuts available immediately.
Configuration Files
Session Data
SSH session data is stored in ~/.autossh/ssh_connections.json. This file is managed automatically by the tool.
Example structure:
[
{
"server_ip": "192.168.1.1",
"user": "root",
"port": "22",
"type": "default",
"raw_command": "ssh root@192.168.1.1",
"shortcut": "tp-1",
"source_file": "bash_history"
},
{
"server_ip": "192.168.1.2",
"user": "admin",
"port": "22",
"type": "proxy",
"raw_command": "ssh admin@192.168.1.2",
"shortcut": "srv2",
"source_file": "zsh_history"
}
]
Shell Configuration
The tool updates your shell configuration files (~/.bashrc and ~/.zshrc) to include aliases for each shortcut.
Examples
Setting a Shortcut
- Assign
tp-1tossh root@192.168.1.1in interactive mode. - Run the alias:
tp-1
Connecting with a Shortcut
- Use the command-line mode to connect:
sshmgm --shortcut tp-1
Replacing a Shortcut
- Update the shortcut in interactive mode.
- The alias in
~/.bashrcand~/.zshrcis automatically replaced.
Development
Run Locally
To test and run the project locally:
python -m autossh.ssh_manager
Add a New Feature
- Fork and clone the repository.
- Create a new branch:
git checkout -b feature/new-feature
- Make your changes and submit a pull request.
Requirements
- Python 3.7+
- Bash or Zsh shell
- Dependencies (installed via
pip):rich
License
This project is licensed under the MIT License. See the LICENSE file for details.
Author
Developed by Hadi Tayanloo. Contributions are welcome! 😊
SSH-Manager
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file sshmgm-1.0.0.tar.gz.
File metadata
- Download URL: sshmgm-1.0.0.tar.gz
- Upload date:
- Size: 8.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b1beec1cb0f6f88f4f8d486932b3ed4e34def3f32701ec45e1d8f9c776618a08
|
|
| MD5 |
48c0e464abd65e76d5b0b1120d56df0c
|
|
| BLAKE2b-256 |
c0fa84baff3cb7b7aa8ae44085ccc541482855ac04b77db1efdcd981dbcca75b
|
File details
Details for the file sshmgm-1.0.0-py3-none-any.whl.
File metadata
- Download URL: sshmgm-1.0.0-py3-none-any.whl
- Upload date:
- Size: 8.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4005f9ab3c59dadccd087f309521eff32093eba49b5c0019ceb3449c329434f9
|
|
| MD5 |
71d4d578fbcc2b0b013ad432d64ced81
|
|
| BLAKE2b-256 |
66192d5b64d44b3d668791301b1aa56c38fb84ec012e6d974618b855960ce706
|