Securely expose remote services via SSH tunnels inside Docker and/or to your Tailscale Tailnet !
Find a file
2025-02-21 01:49:38 +01:00
docker Create logrotate.template 2025-02-21 01:38:07 +01:00
docker-compose.yaml Create docker-compose.yaml 2025-02-21 01:44:39 +01:00
LICENSE Initial commit 2025-02-21 01:34:30 +01:00
README.md Update README.md 2025-02-21 01:34:56 +01:00
ssh-tunnel.webp Add files via upload 2025-02-21 01:49:38 +01:00
THIRD-PARTY-LICENCES Update THIRD-PARTY-LICENCES 2025-02-21 01:40:46 +01:00

🛡️ SSH Tunnel - Secure Remote Access via SSH Tunnels

SSH Tunnel Logo

🚀 Quick Start

For a fast setup, run:

docker run -d -e SSH_HOST=your-server -e SSH_USER=user \
  -v ~/.ssh/id_rsa:/tmp/id_rsa:ro ripleybooya/ssh-tunnel

📌 Why this image?

This container was created to securely expose remote services via SSH tunnels.
Instead of exposing databases or other services to the public internet, this container allows you to create secure SSH tunnels inside a Docker network.

🔥 Use Cases:

  • Securely connect to remote databases (PostgreSQL, MySQL, MariaDB).
  • Access internal services (Redis, Elasticsearch, APIs) via SSH.
  • Securely tunnel any service without exposing it publicly.

🚀 How to Use

1 Run with docker run

docker run -d --name ssh-tunnel \
  -e SSH_HOST="your-server.com" \
  -e SSH_USER="your-username" \
  -e REMOTE_PORTS="127.0.0.1:5432 127.0.0.1:443" \
  -e LOCAL_PORTS="15432 8443" \
  -v /path/to/id_rsa:/tmp/id_rsa:ro \
  --network=my_docker_network \
  ripleybooya/ssh-tunnel

📌 Explanation:

  • SSH_HOST: The remote server where SSH tunnels will be established.
  • SSH_USER: The SSH user on the remote server.
  • REMOTE_PORTS: Ports from the remote server (format: 127.0.0.1:PORT).
  • LOCAL_PORTS: Ports inside the Docker network (mapped to REMOTE_PORTS).
  • -v /path/to/id_rsa:/tmp/id_rsa:ro: Mounts your SSH key securely (using /tmp/id_rsa for better permissions).

2 Using docker-compose.yml

For easier management, use Docker Compose:

version: '3.8'

services:
  ssh-tunnel:
    image: ripleybooya/ssh-tunnel
    container_name: ssh-tunnel
    restart: always
    networks:
      - internal
    environment:
      SSH_HOST: "your-server.com"
      SSH_USER: "your-username"
      REMOTE_PORTS: "127.0.0.1:5432 127.0.0.1:443"
      LOCAL_PORTS: "15432 8443"
    volumes:
      - /path/to/id_rsa:/tmp/id_rsa:ro

networks:
  internal:
    driver: bridge

📌 Why use this image?

Secure: No need to expose services publicly.
Simple: Just set environment variables and run.
Multi-Arch: Works on x86_64 (Intel/AMD) and ARM64 (Oracle Cloud, Raspberry Pi, etc.).
Lightweight: Uses Alpine Linux for minimal resource usage.


📦 Pull & Run

docker pull ripleybooya/ssh-tunnel
docker run --rm -it ripleybooya/ssh-tunnel uname -m

🚀 Now your remote services are accessible through secure SSH tunnels!


🔖 Tags & Keywords

This image can be used for:

  • 🛡️ SSH Tunneling
  • 🔌 Networking & Proxy
  • 🔒 Security & Encryption
  • 🗄️ Database Access (PostgreSQL, MySQL, MariaDB, etc.)
  • 🏗️ Remote Service Exposure in Docker

📜 Third-Party Licenses

This project is based on:

📜 License

This project is licensed under the MIT License.
You are free to use, modify, and distribute it.
Read the full license here.


🤖 AI Assistance & Acknowledgment

This project was built with the help of an AI-powered assistant (LLM) to improve structure, efficiency, and documentation clarity.