Hysteria2: auth failed и invalid token — как найти ошибку авторизации
Разбираем причины ошибок auth failed и invalid token в Hysteria2: несовпадение auth на клиенте и сервере, формат URI, диагностика, безопасная ротация пароля. Пошаговый поиск и исправление.
Содержание
Если вы столкнулись с ошибкой 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://.
Пошаговая диагностика: как найти ошибку
- Проверьте журнал сервера: в логе Hysteria2 будет указано, с какого IP пришла попытка и какое значение auth было получено. Это поможет понять, дошли ли данные до сервера.
- Сравните значение auth в
server.jsonиclient.json. Если пароль длинный или содержит специальные символы, используйте файловый менеджер с подсветкой синтаксиса. - Убедитесь, что вы используете правильный порт и протокол. Иногда ошибка авторизации возникает из-за того, что клиент попадает на другой сервер или устаревший конфиг.
- Проверьте, не включен ли на сервере режим
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. Это позволяет временно иметь несколько действующих паролей для ротации. Проверьте документацию вашей версии: синтаксис может отличаться.
Нужен быстрый рабочий доступ?
Если сейчас важнее вернуть подключение, чем продолжать ручную диагностику, переходите к прямому сценарию оформления доступа.
Получить доступ