{"id":31074169,"url":"https://github.com/iamdanielv/ssh-manager","last_synced_at":"2025-09-16T02:05:23.625Z","repository":{"id":313577695,"uuid":"1051802661","full_name":"iamdanielv/ssh-manager","owner":"iamdanielv","description":"An interactive TUI for managing and connecting to SSH hosts defined in ~/.ssh/config.","archived":false,"fork":false,"pushed_at":"2025-09-14T15:05:59.000Z","size":372,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-14T16:25:09.422Z","etag":null,"topics":["helper","manager","remote","server","shell","ssh","tui","utilities","utility"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/iamdanielv.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-06T18:47:37.000Z","updated_at":"2025-09-14T15:06:03.000Z","dependencies_parsed_at":"2025-09-07T03:27:52.932Z","dependency_job_id":"33a3ae58-4c86-4d38-9a3d-500e0e12d3ad","html_url":"https://github.com/iamdanielv/ssh-manager","commit_stats":null,"previous_names":["iamdanielv/ssh-manager"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/iamdanielv/ssh-manager","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iamdanielv%2Fssh-manager","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iamdanielv%2Fssh-manager/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iamdanielv%2Fssh-manager/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iamdanielv%2Fssh-manager/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/iamdanielv","download_url":"https://codeload.github.com/iamdanielv/ssh-manager/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iamdanielv%2Fssh-manager/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":275348511,"owners_count":25448626,"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","status":"online","status_checked_at":"2025-09-16T02:00:10.229Z","response_time":65,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["helper","manager","remote","server","shell","ssh","tui","utilities","utility"],"created_at":"2025-09-16T02:05:19.692Z","updated_at":"2025-09-16T02:05:23.615Z","avatar_url":"https://github.com/iamdanielv.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🔑 SSH Manager\n\nA user-friendly, interactive TUI for managing your `~/.ssh/config` file.\n\nAbout • Demo • Features • Installation • Quick-Actions\n\n## 🧠 About\n\nSSH Manager provides a simple and robust terminal interface for all your common SSH configuration tasks. It's designed to be a powerful alternative to manually editing your `~/.ssh/config` file, reducing errors and saving time.\n\nIt is a single, self-contained `bash` script with no external dependencies beyond standard command-line tools, making it highly portable and easy to use anywhere.\n\n## ✨ Features\n\nThe script is organized into three main interactive views and an advanced tools menu.\n\n### 🖥️ Server Management\n\n- **Connect**: Interactively select a host and connect with `ssh`.\n- **Add**: Add new hosts with a step-by-step wizard or by cloning an existing host.\n- **Edit**: Modify host parameters using a simple wizard or open the host's entire config block in your `$EDITOR` for advanced changes.\n- **Manage**: `delete`, `rename`, and `clone` hosts with ease.\n- **Test**: Test the connection to a single host or run parallel tests for all configured hosts.\n\n### 🔑 Key Management\n\n- **Generate**: Create new `ed25519` or `rsa` key pairs.\n- **Manage**: `delete` and `rename` key pairs (private and public).\n- **Copy to Server**: Use `ssh-copy-id` to install your public key on a remote server.\n- **Recover**: Re-generate a public key (`.pub`) from its private key file.\n- **View**: Display the contents of a public key.\n\n### 🔌 Port Forwarding\n\n- **Saved Forwards**: Save, manage, and activate port forward configurations. All saved forwards are stored in `~/.ssh/port_forwards.conf`.\n- **Live Status**: View which of your saved forwards are currently `[ACTIVE]` or `[INACTIVE]`.\n- **Manage**: `add`, `edit`, `delete`, and `clone` saved forward configurations.\n- **Activate/Deactivate**: Easily start and stop forwards with a single keypress.\n\n### 🛠️ Advanced Tools\n\n- **Direct Editing**: Open your entire `~/.ssh/config` file in your `$EDITOR`.\n- **Re-order**: Interactively change the order of host blocks in your config file.\n- **Backup**: Create a timestamped backup of your config file.\n- **Import/Export**: Export selected host configurations to a file or import them from a file into your main config.\n\n## 🚀 Quick Actions\n\nBypass the interactive menus for quick, direct actions:\n\n- `-c, --connect`: Go directly to host selection for connecting.\n- `-a, --add`: Go directly to the 'Add a new server' menu.\n- `-p, --port-forward`: Go directly to the 'Port Forwarding' menu.\n- `-l, --list-hosts`: List all configured hosts and exit.\n- `-f, --list-forwards`: List active port forwards and exit.\n- `-t, --test [host|all]`: Test connection to a specific host, all hosts, or show the selection menu.\n- `-h, --help`: Show the help message.\n\n## 📦 Installation\n\n1. Download the `ssh-manager.sh` script.\n2. Make it executable:\n\n    ```bash\n    chmod +x ssh-manager.sh\n    ```\n\n3. Run it:\n\n    ```bash\n    ./ssh-manager.sh\n    ```\n\n    For convenience, place it in a directory that is in your `PATH` (e.g., `~/.local/bin` or `/usr/local/bin`) to run it from anywhere.\n\n    ```bash\n    # Example:\n    sudo mv ssh-manager.sh /usr/local/bin/ssh-manager\n    ssh-manager # Now you can run it like this\n    ```\n\n## ⚙️ Dependencies\n\nThe script relies on a set of common command-line tools that are pre-installed on most Linux and macOS systems:\n\n`ssh`, `ssh-keygen`, `ssh-copy-id`, `awk`, `cat`, `grep`, `rm`, `mktemp`, `cp`, `date`\n\n## 🤝 Contributing\n\nI'm open to and encourage contributions of bug fixes, improvements, and documentation!\n\n## 📜 License\n\n[MIT License](LICENSE) - See the `LICENSE` file for details.\n\n## 📧 Contact\n\nLet me know if you have any questions.\n\n- [Twitter](https://twitter.com/IAmDanielV)\n- [BlueSky](https://bsky.app/profile/iamdanielv.bsky.social)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiamdanielv%2Fssh-manager","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fiamdanielv%2Fssh-manager","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiamdanielv%2Fssh-manager/lists"}