Full-featured SSH tunnel & Cloudflare DNS management library and CLI
Project description
tunnelmate
🚀 A robust SSH tunnel and automatic Cloudflare DNS management library & CLI
Easily create, manage, and auto-reconnect SSH tunnels—with automatic SSH key generation and seamless Cloudflare CNAME linking. Use as a Python library or a lightning-fast CLI tool.
Installation
pip install .
CLI Usage
tunnelmate \
--tunnel localhost:3000:my-app.example.com \
--cf-zone-id <ZONE_ID> \
--cf-api-token <API_TOKEN>
The tool will generate an SSH key if not already present and prints the public key to add to your destination server.
Library Usage
from tunnelmate.core import SSHTunnel
tunnels = [
{"local_host": "localhost", "local_port": 3000, "subdomain": "my-app.example.com"},
]
t = SSHTunnel(
tunnels=tunnels,
key_path="/root/.ssh/id_ed25519"
)
t.run_tunnel()
Features
- Autogenerates SSH keys if not found, and prints your public key.
- Automatic reconnection if the tunnel closes.
- Accepts all configuration—ports, hosts, Cloudflare API and DNS details—from CLI, environment, or YAML.
- Live logs and easy-to-use interface for managing as many tunnels as you want.
- CLI and Python API both supported.
- Clean, maintainable code—ready to extend or integrate.
Cloudflare CNAME Update Example (Python):
from tunnelmate.cloudflare import update_cname
resp = update_cname(
zone_id="yourZoneId",
api_token="yourToken",
subdomain="my-app.example.com",
content="target.example.com"
)
print(resp)
Folder structure
ssh_tunneler/
core.py # Tunnel and key handling core logic
cli.py # Command-line interface (entrypoint)
config.py # Loading config from yaml/env
cloudflare.py # Cloudflare DNS API routines
ssh_utils.py # SSH key/tool helpers
__init__.py
setup.py
README.md
Developed by Parsa Lakzian
Architected by Tara AI
Project details
Release history Release notifications | RSS feed
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 tunnelmate-1.0.8.tar.gz.
File metadata
- Download URL: tunnelmate-1.0.8.tar.gz
- Upload date:
- Size: 6.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
69065ad58a38366c9b1091f0094572afcad61ac0f2c34134286af4cfcfb5a0db
|
|
| MD5 |
c3e6598839c95faff11bc385130bed35
|
|
| BLAKE2b-256 |
a137990c2ddc847b75191739219089ae27bbf3c01cd8d5f30fe79f188ee73c4b
|
File details
Details for the file tunnelmate-1.0.8-py3-none-any.whl.
File metadata
- Download URL: tunnelmate-1.0.8-py3-none-any.whl
- Upload date:
- Size: 7.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
84c2ab76924635fc759942098316e84739a3bd15541018e687fb2adbbe4756bc
|
|
| MD5 |
a7c34516e40b2a18e02a6e0466c96900
|
|
| BLAKE2b-256 |
0748e9bca69ae820f98edb19b404c404ca2de610d7470ecd5a5a7b83c4343d98
|