
chisel v1.13.0
Быстрый TCP/UDP туннель через HTTP с шифрованием SSH, поддерживающий обратное перенаправление портов, прокси SOCKS5 и аутентификацию клиентов для безопасного обхода сети и обхода брандмауэров.
Chisel
Chisel — это быстрый TCP/UDP-туннель, передаваемый по HTTP и защищённый с помощью SSH. Единый исполняемый файл, включающий как клиент, так и сервер. Написан на Go (golang). Chisel в основном полезен для прохождения через межсетевые экраны, хотя его также можно использовать для создания защищённой точки входа в вашу сеть.

Содержание
Возможности
- Простота использования
- Высокая производительность*
- Зашифрованные соединения с использованием протокола SSH (через
crypto/ssh) - Аутентифицированные соединения; аутентификация клиентских подключений с помощью файла конфигурации пользователей, аутентификация серверных подключений с помощью сопоставления отпечатков.
- Клиент автоматически переподключается с экспоненциальной задержкой (настраивается через
--min/max-retry-interval); пинги keepalive имеют тайм-аут, поэтому молча мёртвые соединения (сон/пробуждение, тайм-ауты NAT, перезапуски сервера) обнаруживаются и восстанавливаются - Клиенты могут создавать несколько туннельных эндпоинтов через одно TCP-соединение
- Клиенты могут опционально проходить через прокси SOCKS или HTTP CONNECT
- Обратная переадресация портов (соединения проходят через сервер и выходят через клиент)
- Сервер опционально может выступать в роли обратного прокси
- Сервер опционально разрешает SOCKS5-соединения (см. руководство ниже)
- Клиенты опционально разрешают SOCKS5-соединения из обратной переадресации портов
- Клиентские подключения через stdio, что поддерживает
ssh -o ProxyCommand, обеспечивая SSH поверх HTTP
Установка
Бинарные файлы
См. последний релиз или скачайте и установите его прямо сейчас с помощью curl https://i.jpillora.com/chisel! | bash
Бинарные файлы собраны с последней версией Go, что устанавливает минимальные версии ОС: Windows 10 / Server 2016, macOS 12, ядро Linux 3.2, FreeBSD 12.2. Для более старых систем (например, Windows 7) используйте релиз v1.8.1 или более ранний.
Docker
docker run --rm -it jpillora/chisel --help
Образы являются мультиархитектурными и публикуются как в Docker Hub (jpillora/chisel), так и в GitHub Container Registry (ghcr.io/jpillora/chisel).
Fedora
Пакет поддерживается сообществом Fedora. Если вы столкнётесь с проблемами, связанными с использованием RPM, пожалуйста, воспользуйтесь этим трекером задач.
sudo dnf -y install chisel
Источник
$ go install github.com/jpillora/chisel@latest
Демо
Вы можете запустить собственный демонстрационный сервер за считанные минуты (старое демо на Heroku исчезло вместе с бесплатным тарифом Heroku). example/fly.toml разворачивает этот chisel server в рамках бесплатного лимита fly.io:
$ chisel server --port $PORT --backend http://example.com
# listens on $PORT, proxies normal web requests to http://example.com
Разверните его с помощью fly launch --copy-config из каталога example/, затем создайте туннель к любому сервису, работающему рядом с сервером, например:
$ chisel client https://<your-app>.fly.dev 3000
# connects to your chisel server,
# tunnels your localhost:3000 to the server's localhost:3000
При открытии URL вашего приложения в браузере запрос попадает на бэкенд-прокси сервера по умолчанию и отображает копию example.com.
Использование
$ chisel --help
Usage: chisel [command] [--help]
Version: X.Y.Z
Commands:
server - runs chisel in server mode
client - runs chisel in client mode
Read more:
https://github.com/jpillora/chisel
$ chisel server --help
Usage: chisel server [options]
Options:
--host, Defines the HTTP listening host – the network interface
(defaults the environment variable HOST and falls back to 0.0.0.0).
--port, -p, Defines the HTTP listening port (defaults to the environment
variable PORT and falls back to port 8080).
--key, (deprecated use --keygen and --keyfile instead)
An optional string to seed the generation of a ECDSA public
and private key pair. All communications will be secured using this
key pair. Share the subsequent fingerprint with clients to enable detection
of man-in-the-middle attacks (defaults to the CHISEL_KEY environment
variable, otherwise a new key is generate each run).
--keygen, A path to write a newly generated PEM-encoded SSH private key file.
If users depend on your --key fingerprint, you may also include your --key to
output your existing key. Use - (dash) to output the generated key to stdout.
--keyfile, An optional path to a PEM-encoded SSH private key. When
this flag is set, the --key option is ignored, and the provided private key
is used to secure all communications. (defaults to the CHISEL_KEY_FILE
environment variable). Since ECDSA keys are short, you may also set keyfile
to the inline key string itself, exactly as printed by --keygen (a base64
string with a "ck-" prefix); no extra base64 encoding is needed.