{"id":29536148,"url":"https://github.com/rustonbsd/iroh-ssh","last_synced_at":"2026-02-27T15:19:29.045Z","repository":{"id":301064934,"uuid":"1008005634","full_name":"rustonbsd/iroh-ssh","owner":"rustonbsd","description":"SSH to any machine without ip","archived":false,"fork":false,"pushed_at":"2026-02-07T19:56:42.000Z","size":7463,"stargazers_count":124,"open_issues_count":2,"forks_count":5,"subscribers_count":3,"default_branch":"main","last_synced_at":"2026-02-08T05:08:35.763Z","etag":null,"topics":["iroh","p2p","ssh"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rustonbsd.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-06-24T21:59:08.000Z","updated_at":"2026-02-07T19:53:29.000Z","dependencies_parsed_at":"2025-06-25T01:41:31.864Z","dependency_job_id":"951e7029-2a9b-4561-b43d-a4f238914089","html_url":"https://github.com/rustonbsd/iroh-ssh","commit_stats":null,"previous_names":["rustonbsd/iroh-ssh"],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/rustonbsd/iroh-ssh","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rustonbsd%2Firoh-ssh","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rustonbsd%2Firoh-ssh/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rustonbsd%2Firoh-ssh/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rustonbsd%2Firoh-ssh/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rustonbsd","download_url":"https://codeload.github.com/rustonbsd/iroh-ssh/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rustonbsd%2Firoh-ssh/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29901741,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-27T14:46:13.553Z","status":"ssl_error","status_checked_at":"2026-02-27T14:46:10.522Z","response_time":57,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["iroh","p2p","ssh"],"created_at":"2025-07-17T03:01:22.645Z","updated_at":"2026-02-27T15:19:29.041Z","avatar_url":"https://github.com/rustonbsd.png","language":"Rust","funding_links":[],"categories":["Rust","DevTools"],"sub_categories":[],"readme":"[Español](README_es.md) [Portuguese](README_pt.md)\n# iroh-ssh\n\n[![Crates.io](https://img.shields.io/crates/v/iroh-ssh.svg)](https://crates.io/crates/iroh-ssh)\n[![Documentation](https://docs.rs/iroh-ssh/badge.svg)](https://docs.rs/iroh-ssh)\n[![License](https://img.shields.io/badge/license-MIT%2FApache--2.0-blue.svg)](LICENSE)\n\n**SSH to any machine without ip, behind a NAT/firewall without port forwarding or VPN setup.**\n\n```bash\n# on server\n\u003e iroh-ssh server --persist\n\n    Connect to this this machine:\n\n    iroh-ssh my-user@bb8e1a5661a6dfa9ae2dd978922f30f524f6fd8c99b3de021c53f292aae74330\n\n\n# on client\n\u003e iroh-ssh user@bb8e1a5661a6dfa9ae2dd978922f30f524f6fd8c99b3de021c53f292aae74330\n# or with certificate\n\u003e iroh-ssh -i ~/.ssh/id_rsa_my_cert my-user@bb8e1a5661a6dfa9ae2dd978922f30f524f6fd8c99b3de021c53f292aae74330\n```\n\n**That's all it takes.** (requires ssh/(an ssh server) to be installed)\n\n---\n\n## Installation\n\n```bash\ncargo install iroh-ssh\n```\n\nDownload and setup the binary automatically for your operating system from [GitHub Releases](https://github.com/rustonbsd/iroh-ssh/releases):\n\nLinux\n```bash\n# Linux\nwget https://github.com/rustonbsd/iroh-ssh/releases/download/0.2.9/iroh-ssh.linux\nchmod +x iroh-ssh.linux\nsudo mv iroh-ssh.linux /usr/local/bin/iroh-ssh\n```\n\nmacOS\n```bash\n# macOS arm\ncurl -LJO https://github.com/rustonbsd/iroh-ssh/releases/download/0.2.9/iroh-ssh.macos\nchmod +x iroh-ssh.macos\nsudo mv iroh-ssh.macos /usr/local/bin/iroh-ssh\n```\n\nWindows\n```bash\n# Windows x86 64bit\ncurl -L -o iroh-ssh.exe https://github.com/rustonbsd/iroh-ssh/releases/download/0.2.9/iroh-ssh.exe\nmkdir %LOCALAPPDATA%\\iroh-ssh\nmove iroh-ssh.exe %LOCALAPPDATA%\\iroh-ssh\\\nsetx PATH \"%PATH%;%LOCALAPPDATA%\\iroh-ssh\"\n```\n\nVerify that the installation was successful\n```bash\n# restart your terminal first\n\u003e iroh-ssh --help\n```\n\n---\n\n## Client Connection\n\n```bash\n# Install for your distro (see above)\n# Connect from anywhere\n\u003e iroh-ssh my-user@38b7dc10df96005255c3beaeaeef6cfebd88344aa8c85e1dbfc1ad5e50f372ac\n```\n\nWorks through any firewall, NAT, or private network. No configuration needed.\n\n![Connecting to remote server](/media/t-rec_connect.gif)\n\u003cbr\u003e\n\n---\n\n## Server Setup\n\n```bash\n# Install for your distro (see above)\n# (use with tmux or install as service on linux)\n\n\u003e iroh-ssh server --persist\n\n    Connect to this this machine:\n\n    iroh-ssh my-user@bb8e1a5661a6dfa9ae2dd978922f30f524f6fd8c99b3de021c53f292aae74330\n\n    (using persistent keys in /home/my-user/.ssh/irohssh_ed25519)\n\n    Server listening for iroh connections...\n    client -\u003e iroh-ssh -\u003e direct connect -\u003e iroh-ssh -\u003e local ssh :22\n    Waiting for incoming connections...\n    Press Ctrl+C to exit\n\n```\n\nor use ephemeral keys\n\n```bash\n# Install for your distro (see above)\n# (use with tmux or install as service on linux)\n\n\u003e iroh-ssh server\n\n    Connect to this this machine:\n\n    iroh-ssh my-user@bb8e1a5661a6dfa9ae2dd978922f30f524f6fd8c99b3de021c53f292aae74330\n\n    warning: (using ephemeral keys, run 'iroh-ssh server --persist' to create persistent keys)\n\n    client -\u003e iroh-ssh -\u003e direct connect -\u003e iroh-ssh -\u003e local ssh :22\n    Waiting for incoming connections...\n    Press Ctrl+C to exit\n    Server listening for iroh connections...\n\n```\n\nDisplay its Endpoint ID and share it to allow connection\n\n![Starting server/Installing as service](/media/t-rec_server_service.gif)\n\u003cbr\u003e\n\n## Connection information\n```bash\n// note: works only with persistent keys\n\u003e iroh-ssh info\n\n    Your iroh-ssh endpoint id: 38b7dc10df96005255c3beaeaeef6cfebd88344aa8c85e1dbfc1ad5e50f372ac\n    iroh-ssh version 0.2.9\n    https://github.com/rustonbsd/iroh-ssh\n\n    Your server iroh-ssh endpoint id:\n      iroh-ssh my-user@38b7dc10df96005255c3beaeaeef6cfebd88344aa8c85e1dbfc1ad5e50f372ac\n\n    Your service iroh-ssh endpoint id:\n      iroh-ssh my-user@4fjeeiui4jdm96005255c3begj389xk3aeaeef6cfebd88344aa8c85e1dbfc1ad\n```\n\n---\n\n## How It Works\n\n```\n┌─────────────┐          ┌─────────────────┐          ┌─────────────┐\n│     SSH     │─────────▶│  QUIC Tunnel    │─────────▶│  iroh-ssh   │\n│   Client    │          │  (P2P Network)  │          │   server    │\n└─────────────┘          └─────────────────┘          └─────────────┘\n      │                           ▲                            │\n      │                           │                            │\n      ▼                           │                            ▼\n┌─────────────┐          ┌─────────────┐          ┌──────────────────┐\n│ ProxyCommand│          │  iroh-ssh   │          │   SSH Server     │\n│ iroh-ssh    │──────────│    proxy    │          │ localhost:22     │\n│ proxy %h    │          │             │          └──────────────────┘\n└─────────────┘          └─────────────┘\n```\n\n1. **SSH Client**: Invokes `iroh-ssh proxy` via SSH's ProxyCommand\n2. **Proxy**: Establishes QUIC connection through Iroh's P2P network (automatic NAT traversal)\n3. **Server**: Accepts connection and proxies to local SSH daemon (port 22)\n4. **Authentication**: Standard SSH security end-to-end over encrypted QUIC tunnel\n\n## Use Cases\n\n- **VNC/RDP over SSH**: Securely access graphical desktops remotely\n- **VisualStudio SSH Extension**: Develop on remote machines seamlessly\n- **Remote servers**: Access cloud instances without exposing SSH ports\n- **Home networks**: Connect to devices behind router/firewall\n- **Corporate networks**: Bypass restrictive network policies\n- **IoT devices**: SSH to embedded systems on private networks\n- **Development**: Access staging servers and build machines\n\n## Commands\n\n```bash\n# Get your Endpoint ID and info\n\u003e iroh-ssh info\n\n# Server modes\n\u003e iroh-ssh server --persist          # Interactive mode, e.g. use tmux (default SSH port 22)\n\u003e iroh-ssh server --ssh-port 2222    # Custom SSH port (using ephemeral keys)\n\n# Service mode\n\u003e iroh-ssh service install                   # Background daemon (linux and windows only, default port 22)\n\u003e iroh-ssh service install --ssh-port 2222   # Background daemon with custom SSH port\n\u003e iroh-ssh service uninstall                 # Uninstall service\n\n# Client connection\n\u003e iroh-ssh user@\u003cENDPOINT_ID\u003e                    # Connect to remote server\n\u003e iroh-ssh connect user@\u003cENDPOINT_ID\u003e            # Explicit connect command, works with all standard ssh params and flags\n```\n\n## Security Model\n\n- **Endpoint ID access**: Anyone with the Endpoint ID can reach your SSH port\n- **SSH authentication**: SSH key file, certificate and password auth are supported\n- **Persistent keys**: Uses dedicated `.ssh/iroh_ssh_ed25519` keypair\n- **QUIC encryption**: Transport layer encryption between endpoints\n\n## Status\n\n- [x] Password authentication\n- [x] Persistent SSH keys\n- [x] Linux service mode\n- [x] Add howto gifs\n- [x] Add -p flag for persistence\n- [x] Windows service mode\n- [x] (almost) all ssh commands supported\n- [ ] MacOS service mode\n\n## Custom Relay Setup\n\nsee: [CUSTOM_RELAY.md](CUSTOM_RELAY.md)\n\n## License\n\nLicensed under either of Apache License 2.0 or MIT license at your option.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frustonbsd%2Firoh-ssh","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frustonbsd%2Firoh-ssh","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frustonbsd%2Firoh-ssh/lists"}