A manager for SSH tunnels with a GUI.
Project description
SSH Tunnel Manager GUI
A modern, user-friendly desktop application for managing SSH tunnels with ease.
Overview
The SSH Tunnel Manager simplifies creating, managing, and executing SSH tunnels through an intuitive Graphical User Interface (GUI). Built with Python and PyQt6, it allows for easy configuration of connection profiles, port forwarding, and tunnel control.
Getting Started
There are a couple of easy ways to get started with SSH Tunnel Manager:
1. Download Executable (Recommended)
The easiest way to use the application is to download a pre-built executable for your operating system.
- Go to the Releases page.
- Download the latest executable for your system (Windows, macOS, or Linux).
- Run the downloaded application. No installation is typically required.
2. Install with pip (Cross-Platform)
If you have Python and pip installed, you can install the SSH Tunnel Manager GUI directly from PyPI:
pip install ssh-tunnel-manager-gui
Then, you should be able to run it from your terminal (the exact command might depend on your system's PATH configuration, often it's ssh-tunnel-manager-gui).
Key Features
- Intuitive Profile Management: Save, load, and manage multiple SSH connection profiles.
- Easy Port Forwarding: Configure multiple local-to-remote port mappings per profile.
- Simple Tunnel Control: Start/stop tunnels with a click. Copy the underlying SSH command.
- Real-time Status: Clear visual feedback on tunnel status (Idle, Starting, Running, Stopped, Errors).
- Automatic Persistence: Profiles are saved to
~/.config/ssh_tunnel_manager/config.json.
Configuration
Once the application is running:
- Server: Enter the SSH server address (
user@hostname). - SSH Port: Specify the SSH server port (defaults to 22).
- SSH Key File: (Optional) Path to your SSH private key (tilde
~expansion supported). - Port Forwarding: Add/remove
Local PorttoRemote Portmappings. - Profiles: Save, load, or delete configurations. Changes are auto-saved.
Application data is stored in ~/.config/ssh_tunnel_manager/config.json.
For Developers
If you want to contribute or run the latest development version:
Running from Source
- Clone the repository:
git clone https://github.com/NtWriteCode/ssh-tunnel-manager.git cd ssh-tunnel-manager
- Create a virtual environment (recommended):
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate
- Install dependencies:
pip install -r requirements.txt # For development, also install dev dependencies: # pip install -r requirements.dev.txt
- Run the application:
python -m ssh_tunnel_manager.main # Or your project's main entry point
(Note: I've assumedpython -m ssh_tunnel_manager.mainas a common way to run GUI apps from a package structure. If your entry point is justpython main.pyat the root, please adjust or let me know.)
Requirements (for running from source)
- Python 3.x
- PyQt6 (
PyQt6>=6.0.0) typing-extensions>=4.0.0- An SSH client installed and available in your system's PATH (e.g., OpenSSH).
Building from Source
The project uses PyInstaller. The GitHub Actions workflow (.github/workflows/main-build.yml) handles release builds.
To build manually:
- Ensure you are in the project root with your virtual environment activated.
- Install build dependencies:
pip install pyinstaller - Run PyInstaller (example):
pyinstaller --onefile --name ssh-tunnel-manager-gui --windowed --icon="ssh_tunnel_manager/icon.ico" --add-data "ssh_tunnel_manager/icon.ico:ssh_tunnel_manager" run_app.py
(Therun_app.pyscript is a dedicated entry point for PyInstaller.--iconsets the executable icon.--add-dataensures the icon is also bundled for runtime access.--windowedis good for GUI apps. The namessh-tunnel-manager-guialigns with the PyPI name.) Executables are found in thedistdirectory.
Contributing
Contributions are welcome! Please fork the repository, create a feature branch, commit your changes, and open a pull request.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
License
Distributed under the MIT License. See LICENSE for more information.
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 ssh_tunnel_manager_gui-0.2.3.tar.gz.
File metadata
- Download URL: ssh_tunnel_manager_gui-0.2.3.tar.gz
- Upload date:
- Size: 100.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
421cc3de0ed4514307646af6d835856518cd30172af7e5419ba64e2e8041396d
|
|
| MD5 |
4a026b87d5224743d676e99f582eb5f5
|
|
| BLAKE2b-256 |
c8df27820ead0f36ff1fa1f4ff24b1913f3c437dbdfbc70d665ddc74106dcd94
|
Provenance
The following attestation bundles were made for ssh_tunnel_manager_gui-0.2.3.tar.gz:
Publisher:
publish-to-pypi.yml on NtWriteCode/ssh-tunnel-manager
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ssh_tunnel_manager_gui-0.2.3.tar.gz -
Subject digest:
421cc3de0ed4514307646af6d835856518cd30172af7e5419ba64e2e8041396d - Sigstore transparency entry: 221737608
- Sigstore integration time:
-
Permalink:
NtWriteCode/ssh-tunnel-manager@f6dfafec499c89254b67f1e0a9af0b902ed82514 -
Branch / Tag:
refs/tags/v0.2.3 - Owner: https://github.com/NtWriteCode
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-to-pypi.yml@f6dfafec499c89254b67f1e0a9af0b902ed82514 -
Trigger Event:
push
-
Statement type:
File details
Details for the file ssh_tunnel_manager_gui-0.2.3-py3-none-any.whl.
File metadata
- Download URL: ssh_tunnel_manager_gui-0.2.3-py3-none-any.whl
- Upload date:
- Size: 98.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
adc2aa0474747907b72333fad604c8aa5363b9a6341499e474bbf2842a1c9277
|
|
| MD5 |
34ef4b5efbf07fe1238f677b1f3154b4
|
|
| BLAKE2b-256 |
d309b08b18d5c9b3a3342ea2fc2ddaab4447125854c2a3603e2c89a18d2672cf
|
Provenance
The following attestation bundles were made for ssh_tunnel_manager_gui-0.2.3-py3-none-any.whl:
Publisher:
publish-to-pypi.yml on NtWriteCode/ssh-tunnel-manager
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ssh_tunnel_manager_gui-0.2.3-py3-none-any.whl -
Subject digest:
adc2aa0474747907b72333fad604c8aa5363b9a6341499e474bbf2842a1c9277 - Sigstore transparency entry: 221737618
- Sigstore integration time:
-
Permalink:
NtWriteCode/ssh-tunnel-manager@f6dfafec499c89254b67f1e0a9af0b902ed82514 -
Branch / Tag:
refs/tags/v0.2.3 - Owner: https://github.com/NtWriteCode
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-to-pypi.yml@f6dfafec499c89254b67f1e0a9af0b902ed82514 -
Trigger Event:
push
-
Statement type: