iroh-ssh
SSH to any machine behind NAT/firewall without port forwarding or VPN setup.
That's all it takes.
Server Setup
GIF placeholder: Installing and starting iroh-ssh service
# Install (example ubuntu 24.04)
# Start service (runs in background)
Display its Node ID and share it to allow connection
Client Connection
GIF placeholder: Connecting to remote server
# Connect from anywhere
Works through any firewall, NAT, or private network. No configuration needed.
How It Works
┌─────────────┐ ┌──────────────┐ ┌─────────────────┐ ┌─────────────┐
│ iroh-ssh │───▶│ system SSH │───▶│ QUIC Tunnel │───▶│ iroh-ssh │
│ (your machine) │ TCP Listener │ │ (P2P Network) │ │ server │
└─────────────┘ | (your machine) └─────────────────┘ └─────────────┘
└──────────────┘
│ │
▼ ▼
┌──────────────┐ ┌─────────────┐
│ localhost: │ │ SSH Server │
│ random_port │ │ (port 22) │
└──────────────┘ └─────────────┘
- Client: Creates local TCP listener, connects system SSH client to it
- Tunnel: QUIC connection through Iroh's P2P network (automatic NAT traversal)
- Server: Proxies connections to local SSH daemon running on (e.g. port localhost:22) (requires ssh server)
- Authentication: Standard SSH security applies end-to-end. The tunnel is ontop of that an encrypted QUIC connection.
Use Cases
- Remote servers: Access cloud instances without exposing SSH ports
- Home networks: Connect to devices behind router/firewall
- Corporate networks: Bypass restrictive network policies
- IoT devices: SSH to embedded systems on private networks
- Development: Access staging servers and build machines
Installation
Download the binary for your operating system from GitHub Releases:
# Ubuntu/Debian
# macOS arm
# Or compile from source (rust.up required)
Commands
# Get your Node ID and info
# Server modes
# Client connection
Security Model
- Node ID access: Anyone with the Node ID can reach your SSH port
- SSH authentication: ATM only password auth is supported
- Persistent keys: Uses dedicated
.ssh/iroh_ssh_ed25519
keypair - QUIC encryption: Transport layer encryption between endpoints
Status
- Password authentication
- Persistent SSH keys
- Linux service mode
- Certificate support (
-i
flag) - Additional SSH features
License
Licensed under either of Apache License 2.0 or MIT license at your option.