
Установите безопасный удалённый доступ к машине с интерактивной оболочкой, передачей файлов и веб-прокси через сквозное шифрование peer-to-peer WebRTC, используя браузер или CLI без проброса портов и учётных записей.
bitbang — это единый статический бинарный мультиинструмент удалённого доступа. Из любого браузера: интерактивная оболочка и доступ к файловому браузеру на удалённой машине. Также можно обращаться к веб-приложениям в сети этой машины. Помимо браузера, он поддерживает переадресацию TCP-портов, копирование файлов и совместное использование терминала. Для работы не требуется учётная запись или настройка — он просто работает.

На машине, к которой вы хотите получить доступ:``` curl -sSfL bitba.ng/install | sh bitbang serve
`serve` выводит URL. Откройте его в любом браузере — и вы получите терминал, файловый браузер и прокси к сети этой машины — или подключитесь к той же машине из другого терминала с помощью `bitbang connect <url>`, что добавляет проброс портов (`-L`) и копирование файлов (`bitbang cp`). Соединение сквозное зашифровано и работает по принципу peer-to-peer; сервер `bitba.ng` знакомит два конца друг с другом, а затем отходит в сторону.
`bitbang` — это один статический Go-бинарник. Он является частью [проекта BitBang](https://github.com/richlegrand/bitbang); этот [whitepaper](https://github.com/richlegrand/bitbang/blob/main/whitepaper.md) подробно описывает архитектуру.
## Сравнение
| | ngrok | Tailscale | `bitbang` |
| ------------------------------ | ---------------------- | ------------------------------ | ------------------- |
| Настройка перед первым использованием | Аккаунт + authtoken | Аккаунт + вход на каждом устройстве | **Одна команда** |
| Чтобы чем-то поделиться, вы запускаете | веб-сервер плюс ngrok | их клиент на обеих машинах | **`bitbang serve`** |
| Что получает браузер на другом конце | веб-сервер, который вы уже запускали | ничего — нужен их клиент | **терминал, файловый браузер и веб-приложения в удалённой сети** |
| Путь данных | их серверы | P2P (резервный релей) | **P2P (резервный релей)** |
| Сквозное шифрование | Не по умолчанию | Да | **Да** |
## Быстрые рецепты
**Доступ к сервису дома**
- [Подключите домашний NAS откуда угодно (SMB)](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#mount-your-home-nas-from-anywhere-smb)
- [Смотрите свою медиатеку откуда угодно (Jellyfin)](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#watch-your-media-library-from-anywhere-jellyfin)
- [Используйте свою собственную LLM откуда угодно (Ollama, Open WebUI)](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#use-your-own-llm-from-anywhere-ollama-open-webui)
- [Проверяйте свои камеры видеонаблюдения (Frigate)](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#check-your-security-cameras-frigate)
- [Управляйте домашней автоматизацией, не открывая её наружу (Home Assistant)](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#reach-your-home-automation-without-exposing-it-home-assistant)
- [Печатайте на домашний принтер (IPP, CUPS)](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#print-to-your-home-printer-ipp-cups)
**Доступ к машине**
- [Получите shell на машине за NAT](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#get-a-shell-on-a-machine-behind-nat)
- [Получите shell с телефона](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#get-a-shell-from-your-phone)
- [Удалённый рабочий стол на Windows-машине (RDP)](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#remote-desktop-into-a-windows-machine-rdp)
- [Доступ к рабочему столу Linux или Mac (VNC)](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#reach-a-linux-or-mac-desktop-vnc)
- [SSH к машине без открытых портов (OpenSSH)](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#ssh-to-a-machine-with-no-open-port-openssh)
- [Настройте headless Raspberry Pi](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#set-up-a-headless-raspberry-pi)
**Поделиться с кем-то ещё**
Поделиться — значит просто дать кому-то уникальный URL или QR-код, дающий доступ. Права можно настраивать и задавать срок действия — минуты, часы и т. д.
- [Делитесь файлами, никуда их не загружая](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#share-files-without-uploading-them-anywhere)
- [Покажите кому-то свой проект](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#show-someone-your-project)
- [Дайте доступ с истекающим сроком](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#give-someone-access-that-expires)
- [Проверяйте сессию агента с телефона (Claude Code, tmux)](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#check-your-agent-session-from-your-phone-claude-code-tmux)
- [Почините чужой роутер](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#fix-someone-elses-router)
**Разработка и устройства**
- [Подключитесь к базе данных с машины разработчика (Postgres, MySQL)](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#reach-a-database-from-your-dev-machine-postgres-mysql)
- [Синхронизируйте устройства, которые не могут найти друг друга (Syncthing)](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#sync-devices-that-cannot-find-each-other-syncthing)
- [Наблюдайте за роботом из браузера (ROS, Foxglove)](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#watch-a-robot-from-a-browser-ros-foxglove)
**Приёмы**
- [Что открывает пробрасывающий слушатель](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#what-a-forwarding-listener-exposes)
- [Дайте другим машинам в вашей LAN использовать проброс](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#let-other-machines-on-your-lan-use-a-forward)
- [Заведомо не работает](https://github.com/richlegrand/bitbang/blob/main/cookbook.md#known-not-to-work)
## Использование `bitbang`
У каждого соединения два конца: **слушатель** (`bitbang serve`, запущенный на машине, к которой обращаются) и **коннектор** (браузер или CLI `bitbang` на машине, которая обращается). Один URL слушателя обслуживает оба типа коннекторов.
### Слушатель: `bitbang serve````
bitbang serve # everything: shell + proxy + files + forward
bitbang serve shell # just a terminal
bitbang serve files ~/share # just a directory (-files-upload to allow uploads)
bitbang serve proxy localhost:8080 # just one web app, straight at the URL
bitbang serve proxy a.lan:80,b.lan:80 # ...or several, chosen in the browser
bitbang serve forward 127.0.0.1:22 # just TCP, for `connect -L`
bitbang serve shell files ~/share proxy nas.lan:8096 # any combination
Каждый из них выводит QR-код, URL и код сопряжения. Режим определяет, что вообще может делать слушатель: serve shell не предоставляет переадресацию, а слушатель только с переадресацией никогда не запускает оболочку, поэтому повышать привилегии не до чего.
Одна особенность по умолчанию, о которой стоит знать: переадресация и прокси достигают любого хоста:порта, доступного слушателю, а не только того, что вы имели в виду, поэтому ссылка, выданная для базы данных, также достигает остальной части этой сети. Указание целей после слова сужает область действия — forward db.internal:5432 достигает только её и ничего больше.
bitbang share