Сети

xray x25519: как извлечь publicKey из privateKey

Узнайте, как получить publicKey из команды xray x25519, если выводит только privateKey, Password и Hash32. Пошаговая инструкция для VLESS+REALITY: используйте флаг -i, примеры конфигураций сервера и клиента, частые ошибки с ключами xray.

Как извлечь publicKey из вывода команды xray x25519?

Я пытаюсь использовать команду xray x25519 для генерации пары ключей (privateKey и publicKey), но команда возвращает три значения: PrivatKey, Password и Hash32. Как правильно использовать эти данные для получения публичного ключа?

Команда xray x25519 генерирует пару ключей для REALITY; publicKey либо уже выводится в результате, либо его нужно вычислить из privateKey. Если вы видите в выводе только PrivateKey (и дополнительные поля Password и Hash32), выполните xray x25519 -i "privateKey" — команда вернёт publicKey. Password и Hash32 обычно не используются для VLESS+REALITY: privateKey храните на сервере, publicKey вставляйте в клиентскую конфигурацию.


Содержание


Что выводит команда xray x25519 и как читать результат

Вывод xray x25519 может выглядеть по‑разному в зависимости от версии и параметров. Встречаются две распространённые ситуации:

  • Вариант A — команда печатает сразу и Private key, и Public key (плюс иногда Password и Hash32). Пример:
bash
$ ./xray x25519
Private key: MBpO2ao_iQZLQ6NWs9DythpoKkkt0pUPVLXJyUPKF1w
Public key: m1tN3i54O50Cf4Y2jDRF9bF52NKaSm5FmN5MCH_H-lI
Password: ...
Hash32: ...
  • Вариант B — вывод содержит только Private key и дополнительные поля Password/Hash32, а publicKey не печатается. Тогда publicKey надо получить отдельно.

Флаг -i уместен именно для второй ситуации: он принимает existing privateKey и вычисляет соответствующий publicKey. Описание параметров команды и флага -i — в документации по командам Xray: https://xtls.github.io/en/document/command.html. Практические примеры и обсуждения поведения команды можно найти в обсуждении разработчиков: https://github.com/XTLS/Xray-core/discussions/1702.

Зачем тогда Password и Hash32? Они служат для вспомогательных целей (хранение/шифрование), но для базовой настройки VLESS+REALITY обычно не нужны — игнорируйте их при установке соединения.


Как извлечь xray x25519 public key из privateKey

Шаги — коротко и по делу.

  1. Скопируйте privateKey точно так, как он выведен (без пробелов, без лишних переносов строк). Часто это base64 в RawURLEncoding.
  2. Выполните команду с флагом -i, передав privateKey как аргумент. Пример:
bash
# вставьте privateKey вместо <PRIVATE_KEY>
./xray x25519 -i "MBpO2ao_iQZLQ6NWs9DythpoKkkt0pUPVLXJyUPKF1w"

В ответ вы получите строку publicKey (обычно в формате base64), которую можно копировать в клиент.

  1. Если нужна другая кодировка, посмотрите опцию --std-encoding в той же документации; но в большинстве случаев стандартного вывода достаточно (см. Command Parameters).

Короткий чек-лист:

  • privateKey — в конфигурацию сервера (realitySettings.privateKey).
  • publicKey — в конфигурацию клиента (realitySettings.publicKey).
  • Password и Hash32 — не требуются для базовой работы REALITY (игнорируйте при настройке).

Подробности по полям и месту вставки ключей в streamSettings — в разделе конфигурации транспорта: https://xtls.github.io/en/config/transport.html.


Примеры команд и конфигурация VLESS+REALITY

Пример: вы запустили ./xray x25519 и получили только Private key + Password + Hash32. Получаем publicKey и вставляем в конфигурацию клиента.

Получение publicKey:

bash
# пример вычисления publicKey из существующего privateKey
./xray x25519 -i "MBpO2ao_iQZLQ6NWs9DythpoKkkt0pUPVLXJyUPKF1w"
# вывод: Public key: m1tN3i54O50Cf4Y2jDRF9bF52NKaSm5FmN5MCH_H-lI

Минимальные примеры конфигурации (фрагменты). Сервер (вставьте privateKey):

json
"streamSettings": {
 "security": "reality",
 "realitySettings": {
 "privateKey": "MBpO2ao_iQZLQ6NWs9DythpoKkkt0pUPVLXJyUPKF1w"
 }
}

Клиент (вставьте publicKey и укажите serverName/dest согласно серверной настройке):

json
"streamSettings": {
 "security": "reality",
 "realitySettings": {
 "publicKey": "m1tN3i54O50Cf4Y2jDRF9bF52NKaSm5FmN5MCH_H-lI",
 "serverName": "example.com"
 }
}

Если нужен более подробный практический разбор — в гайдах и статьях есть готовые примеры конфигураций и объяснения (например, практический разбор соседних сценариев: https://henrywithu.com/the-ultimate-guide-coexisting-web-apps-with-xrays-vision-and-reality-on-a-single-port/ и туториалы: https://github.com/wpdevelopment11/xray-tutorial).


Частые ошибки и советы по ключам xray

  • Копирование с лишними символами. Частая ошибка — включить пробелы, кавычки или переносы строки. Решение: вставляйте ключи как одну непрерывную строку.
  • Перепутать privateKey и publicKey. PrivateKey никогда не должен попадать в клиентскую конфигурацию или публичные места.
  • Неправильная кодировка. Если вы изменяли способ кодирования вывода, используйте --std-encoding или приведите ключ к нужной кодировке перед вставкой.
  • Несовпадение serverName/dest. Убедитесь, что значения, указанные в клиенте, соответствуют серверной настройке.
  • Забыт перезапуск/перезагрузка сервиса. После изменения конфигурации перезапустите xray, чтобы применились новые ключи.
  • Логи. При проблемах включите уровень логирования и смотрите ошибки — они помогут понять, использован ли правильный ключ.

Если ключ скомпрометирован — проще сгенерировать новую пару и заменить privateKey на сервере и publicKey на клиентах. Для примеров реальных выводов и обсуждений смотрите: https://github.com/XTLS/Xray-core/discussions/1702.


Источники

  1. Command Parameters — XTLS (xray) documentation
  2. Transport — XTLS (xray) configuration
  3. How I tested Xray REALITY — GitHub discussion
  4. The Ultimate Guide: Coexisting Web Apps with Xray’s Vision and Reality on a Single Port
  5. xray-tutorial — GitHub

Заключение

Если xray x25519 не показывает publicKey, просто используйте xray x25519 -i "privateKey" — это самый быстрый способ получить xray x25519 public key. Password и Hash32 обычно можно проигнорировать при настройке VLESS+REALITY: privateKey остаётся на сервере, publicKey — в клиенте.

Авторы
Проверено модерацией
Модерация
xray x25519: как извлечь publicKey из privateKey