iroh-ssh
SSH to any machine without ip, behind a NAT/firewall without port forwarding or VPN setup.
# on server
> iroh-ssh
# on client
> iroh-ssh
# or with certificate
> iroh-ssh
That's all it takes. (requires ssh/(an ssh server) to be installed)
Installation
Download and setup the binary automatically for your operating system from GitHub Releases:
Linux
# Linux
macOS
# macOS arm
Windows
# Windows x86 64bit
Verify that the installation was successful
# restart your terminal first
> iroh-ssh
Client Connection
# Install for your distro (see above)
# Connect from anywhere
> iroh-ssh
Works through any firewall, NAT, or private network. No configuration needed.
Server Setup
# Install for your distro (see above)
# (use with tmux or install as service on linux)
> iroh-ssh
()
or use ephemeral keys
# Install for your distro (see above)
# (use with tmux or install as service on linux)
> iroh-ssh
)
Display its Endpoint ID and share it to allow connection
Connection information
> iroh-ssh
How It Works
┌─────────────┐ ┌─────────────────┐ ┌─────────────┐
│ SSH │─────────▶│ QUIC Tunnel │─────────▶│ iroh-ssh │
│ Client │ │ (P2P Network) │ │ server │
└─────────────┘ └─────────────────┘ └─────────────┘
│ ▲ │
│ │ │
▼ │ ▼
┌─────────────┐ ┌─────────────┐ ┌──────────────────┐
│ ProxyCommand│ │ iroh-ssh │ │ SSH Server │
│ iroh-ssh │──────────│ proxy │ │ localhost:22 │
│ proxy %h │ │ │ └──────────────────┘
└─────────────┘ └─────────────┘
- SSH Client: Invokes
iroh-ssh proxyvia SSH's ProxyCommand - Proxy: Establishes QUIC connection through Iroh's P2P network (automatic NAT traversal)
- Server: Accepts connection and proxies to local SSH daemon (port 22)
- Authentication: Standard SSH security end-to-end over encrypted QUIC tunnel
Use Cases
- VNC/RDP over SSH: Securely access graphical desktops remotely
- VisualStudio SSH Extension: Develop on remote machines seamlessly
- 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
Commands
# Get your Endpoint ID and info
> iroh-ssh
# Server modes
> iroh-ssh > iroh-ssh
# Service mode
> iroh-ssh > iroh-ssh > iroh-ssh
# Client connection
> iroh-ssh > iroh-ssh
Security Model
- Endpoint ID access: Anyone with the Endpoint ID can reach your SSH port
- SSH authentication: SSH key file, certificate and password auth are supported
- Persistent keys: Uses dedicated
.ssh/iroh_ssh_ed25519keypair - QUIC encryption: Transport layer encryption between endpoints
Status
- Password authentication
- Persistent SSH keys
- Linux service mode
- Add howto gifs
- Add -p flag for persistence
- Windows service mode
- (almost) all ssh commands supported
- MacOS service mode
License
Licensed under either of Apache License 2.0 or MIT license at your option.