Диагностика и исправление Логи Обновлено 5 Hysteria2

Hysteria2: auth failed и invalid token — как найти ошибку авторизации

Разбираем причины ошибок auth failed и invalid token в Hysteria2: несовпадение auth на клиенте и сервере, формат URI, диагностика, безопасная ротация пароля. Пошаговый поиск и исправление.

hysteria2auth failedinvalid tokenавторизацияvpn настройкапроблемы подключения
Содержание
КороткоAuth failed в Hysteria2 означает, что пароль (auth) в конфигурации клиента не совпадает с auth на сервере. Проверьте формат ввода, сравните client.json и server.json, затем измените auth на сервере и переподключите клиенты. Не забывайте про ротацию паролей без публикации секретов.

Если вы столкнулись с ошибкой auth failed или invalid token при подключении к Hysteria2, значит сервер не принял ваши авторизационные данные. Чаще всего это вызвано простым несовпадением поля auth в конфигурации клиента и сервера. В этом руководстве разберем, как быстро найти причину и восстановить подключение, не пересоздавая всю настройку.

Что такое auth в Hysteria2 и почему возникает auth failed

В Hysteria2 авторизация строится на общем пароле или токене, который указывается в блоках auth у сервера и клиента. Сервер сравнивает полученное значение с тем, что указан в его конфигурации, и при несовпадении возвращает ошибку. Auth failed — это общий отказ авторизации, а invalid token появляется, когда сервер ожидает токен конкретного формата, но получает нечто иное. Важно понимать: эти сообщения не означают проблему с сетью или маршрутизацией — проблема именно в ключе доступа.

Разница между auth и password в Hysteria2

В конфигурации Hysteria2 используется только термин auth — единое значение для всех клиентов. В старых версиях протокола мог применяться password, но при переходе на Hysteria2 поле переименовано. Если вы настраиваете клиент по устаревшему шаблону, легко ошибиться и записать пароль в поле password, которое игнорируется. Всегда проверяйте, что в конфигурации клиента указан именно ключ auth, а не password.

Совпадение client и server: как сравнить конфигурации

Самый частый источник ошибки — разные значения auth на сервере и у клиента. Откройте файл server.json на сервере и найдите блок auth с текстовым паролем. Затем откройте конфигурацию клиента — там аналогичный блок auth должен содержать точно такую же строку. Даже лишний пробел или неверный регистр приводит к отказу. Рекомендуем скопировать значение с сервера в буфер обмена и вставить его в клиентский файл без ручного набора.

Вот пример корректного сопоставления:

// server.json
{
  "auth": {
    "type": "password",
    "password": "my-super-secret"
  }
}

// client.json
{
  "auth": "my-super-secret",
  "server": "example.com:443"
}

Формат подключения и URI: где искать auth

При подключении через URI-ссылку hysteria2:// параметры авторизации передаются в формате hysteria2://auth@server:port. Обратите внимание, что auth здесь — это URL-кодированное значение пароля: спецсимволы должны быть заменены на проценты. Например, пароль s3cret:pass должен стать s3cret%3Apass. Если вы используете клиент с графическим интерфейсом, ошибки часто возникают из-за неправильной вставки длинного URI, поэтому проверяйте, что адрес начинается с hysteria2://, а не hysteria://.

Пошаговая диагностика: как найти ошибку

  1. Проверьте журнал сервера: в логе Hysteria2 будет указано, с какого IP пришла попытка и какое значение auth было получено. Это поможет понять, дошли ли данные до сервера.
  2. Сравните значение auth в server.json и client.json. Если пароль длинный или содержит специальные символы, используйте файловый менеджер с подсветкой синтаксиса.
  3. Убедитесь, что вы используете правильный порт и протокол. Иногда ошибка авторизации возникает из-за того, что клиент попадает на другой сервер или устаревший конфиг.
  4. Проверьте, не включен ли на сервере режим auth с типом password, а на клиенте — auth с типом token. Они несовместимы.

Безопасная ротация доступа без простоя

Если вам нужно сменить пароль, не делайте это одновременно на сервере и клиентах. Сначала обновите auth в конфигурации сервера и перезапустите Hysteria2, затем постепенно обновите клиентов. Можно использовать несколько values для auth на сервере (если поддерживается) и добавить новый пароль рядом со старым, дать клиентам переключиться, а затем удалить старый. Так вы избежите длительного простоя, когда все пользователи теряют подключение.

Помните, что секреты не должны храниться в открытом виде: используйте переменные окружения или файлы с ограниченными правами доступа. Не публикуйте URI с паролем в общих чатах или в системах контроля версий.

Что делать, если ошибка остается

Проверьте версию Hysteria2: возможно, клиент и сервер используют несовместимые версии протокола. Также взгляните на журнал клиента — там может быть точное сообщение об ошибке. Иногда проблема скрывается в TLS: сертификат не проходит проверку, и клиент не отправляет auth. В этом случае обратите внимание на наши материалы про ошибки сертификата и UDP в мобильных сетях, чтобы исключить связанные проблемы. Если все перечисленное не помогло, сверьтесь с официальной документацией вашей версии или обратитесь к администратору сервера.

Возвращаясь к основной задаче: ошибка auth failed решается за пару минут. Самое главное — сверить ключ auth на обеих сторонах и правильно указать его в URI. Мы надеемся, что это руководство помогло вам восстановить доступ. Подробнее о базовой настройке Hysteria2 читайте на главной странице вики.

Мини-чеклист

  • Убедитесь, что в client.json используется ключ auth, а не password
  • Сравните значение auth в client.json и server.json
  • Проверьте URL-encoding спецсимволов в auth при использовании URI
  • Просмотрите логи сервера на предмет упоминания auth failed
  • При ротации пароля сначала обновите сервер, затем клиентов

Частые ошибки

  • Путают поля auth и password, используя устаревший шаблон
  • Вставляют URI с лишними пробелами или неправильным encoding
  • Игнорируют регистр символов в значении auth
  • Меняют пароль на сервере, но не обновляют конфигурации клиентов
  • Перепутывают порт или хост в конфигурации, из-за чего попадают не на тот сервер

FAQ

Чем отличается auth failed от invalid token в Hysteria2?

Это разные сообщения об одной проблеме: сервер не принял переданный ключ. Auth failed — общий отказ в авторизации, invalid token — сервер ожидает токен специфического формата, но получил несовместимое значение. Оба указывают на несовпадение пароля между клиентом и сервером.

Почему Hysteria2 выдает ошибку авторизации даже при правильном пароле?

Возможные причины: вы указали поле password вместо auth, допустили лишний пробел или неверный регистр, использовали устаревшую версию протокола, или на сервере включен проверка типа токена. Проверьте оба файла конфигурации и версию ПО.

Как быстро исправить auth failed в Hysteria2?

Откройте server.json, скопируйте значение auth, вставьте его в client.json в поле auth. Убедитесь, что в графическом клиенте правильно вставлен URI с URL-encoded паролем. После этого перезапустите клиент.

Можно ли иметь несколько паролей на сервере Hysteria2?

В некоторых версиях Hysteria2 поддерживается массив значений auth. Это позволяет временно иметь несколько действующих паролей для ротации. Проверьте документацию вашей версии: синтаксис может отличаться.

Нужен быстрый рабочий доступ?

Если сейчас важнее вернуть подключение, чем продолжать ручную диагностику, переходите к прямому сценарию оформления доступа.

Получить доступ

Дальше по теме

Связанные статьи