Права администратора TeamSpeak нельзя восстановить кнопкой «Забыли пароль?» — но их можно вернуть за пять минут, если у вас есть доступ к машине, где работает сервер. Статья разбирает все случаи по нарастающей тяжести: от «ключ лежит, но не введён» до «утеряно вообще всё, а сервер арендован».
Сразу граница применимости: всё ниже — для владельца сервера. Если вы потеряли админку на чужом сервере, единственный путь — попросить новый ключ у владельца.
Что такое privilege key и почему он сгорает
Privilege key (токен) — строка вида AbCdEfGh1jKlMnOpQrStUvWxYz12345, которую сервер печатает в консоль при первом запуске. Кто введёт её в клиенте, тот получит группу Server Admin на этом сервере.
Ключ одноразовый, и это не недоработка, а механизм безопасности. При активации ключ навсегда связывает права с идентификацией — криптографической парой ключей в вашем клиенте TeamSpeak, — и тут же гасится. Работай он многократно, любой, кто подсмотрел строку в логе или скриншоте, становился бы админом.
Из этой схемы следуют оба типовых сценария потери:
- Потерян сам ключ — консоль первого запуска закрыта, строка
token=нигде не сохранена. - Потеряна идентификация — ключ был введён, права работали, но вы переустановили систему или сменили компьютер, не экспортировав идентификацию. Сервер помнит админа, но этот админ — пара ключей, которой больше не существует.
Лечатся оба сценария одинаково: нужен новый ключ. Откуда его взять — зависит от того, что у вас осталось.
Ключ есть, но не введён
Самый лёгкий случай. Строка token=... сохранилась — в заметках, в логе первого запуска, в письме от хостера.
В клиенте TeamSpeak: подключитесь к серверу, затем меню Permissions → Use Privilege Key, вставьте строку (без префикса token=, только сам ключ), OK. Клиент покажет «Privilege Key successfully used», рядом с ником появится значок группы Server Admin.
Если ключ с первого запуска нигде не записан, но сервер ставили вы сами — он остался в логах сервера. Прежде чем идти в ServerQuery, проверьте:
grep -r "token=" /opt/teamspeak/teamspeak3-server_linux_amd64/logs/
Путь подставьте свой; в инструкции по установке сервер живёт в /opt/teamspeak. Нашлась строка — вводите ключ, как описано выше. Ключ из лога сработает, только если его никто ещё не активировал.
Ключ потерян, но есть SSH: новый ключ через ServerQuery
Основной сценарий восстановления. Понадобятся SSH-доступ к серверу и пароль serveradmin — тот, что печатался при первом запуске рядом с токеном. Если нет и его, сначала сбросьте пароль (следующий раздел), потом возвращайтесь сюда.
ServerQuery — текстовый административный интерфейс сервера на порту 10011. В интернет его не открывают: протокол нешифрованный, пароль летит открытым текстом, а порт круглосуточно сканируют боты — подробности в справочнике по портам. Поэтому подключаемся через SSH-туннель — трафик идёт внутри шифрованного канала, а порт остаётся закрытым:
ssh -L 10011:127.0.0.1:10011 root@203.0.113.10
Пока эта сессия открыта, порт 10011 вашего компьютера проброшен на localhost сервера. Можно и проще — открыть ServerQuery прямо в SSH-сессии на самом сервере:
telnet 127.0.0.1 10011
Нет telnet — поставьте (sudo apt install telnet) или используйте nc 127.0.0.1 10011. Сервер ответит приветствием TS3. Дальше — четыре команды, каждая завершается Enter, на успех сервер отвечает error id=0 msg=ok.
1. Логин:
login serveradmin ВАШ_ПАРОЛЬ
2. Выбор виртуального сервера. Один физический сервер TeamSpeak может держать несколько виртуальных; команды дальше действуют на выбранный. Выбираем по голосовому порту:
use port=9987
Если ваш сервер работает на нестандартном порту, подставьте его.
3. Ищем реальный номер группы Server Admin:
servergrouplist
Сервер выведет строку со всеми группами. В свежей установке sgid группы Server Admin обычно 6, но полагаться на «обычно» нельзя — на серверах с историей номера другие. Ищите фрагмент с name=Server\sAdmin и смотрите на два поля рядом:
sgid=6 name=Server\sAdmin type=1 ...
Нужна группа с type=1 — это обычная группа вашего виртуального сервера. Рядом в списке будет почти одноимённая с type=0 — это шаблон, из которого создаются группы для новых виртуальных серверов; ключ на неё прав не даст. Группы с type=2 — служебные, для query-клиентов. Классическая ошибка этой процедуры — взять sgid шаблона вместо рабочей группы.
4. Создаём ключ (подставьте свой sgid):
privilegekeyadd tokentype=0 tokenid1=6 tokenid2=0
Разбор параметров по документации ServerQuery: tokentype=0 — ключ на серверную группу (при tokentype=1 был бы ключ на канальную группу), tokenid1 — номер группы, tokenid2 — номер канала, который нужен только канальным ключам, поэтому для серверной группы ставится 0. Ответ:
token=AbCdEfGh1jKlMnOpQrStUvWxYz123456789ABCDEF
error id=0 msg=ok
Строка после token= — ваш новый privilege key. Закройте сессию командой quit, откройте клиент TeamSpeak и активируйте ключ: Permissions → Use Privilege Key. Админка вернулась — проверьте правым кликом по серверу: пункты редактирования должны стать доступны. Что делать с правами дальше — группы, канальные админы, иерархия permissions — разобрано в статье о правах и каналах.
Утерян и пароль serveradmin: сброс перезапуском
Пароль serveradmin восстановить нельзя — сервер хранит не пароль, а его хэш. Но его можно заменить: официальная процедура TeamSpeak — один запуск сервера с параметром serveradmin_password=.
Для этого нужен доступ к машине с правами на остановку сервера. Простой составит меньше минуты. На Ubuntu из нашей инструкции последовательность такая:
sudo systemctl stop ts3server
cd /opt/teamspeak/teamspeak3-server_linux_amd64
sudo -u teamspeak ./ts3server_startscript.sh start serveradmin_password=НовыйНадёжныйПароль
sudo -u teamspeak ./ts3server_startscript.sh stop
sudo systemctl start ts3server
Что здесь происходит: сервер при старте видит параметр и перезаписывает хэш пароля в базе — каналы, группы и пользователи не затрагиваются. Останавливаем этот ручной запуск и возвращаем сервер под systemd уже без параметра: оставите его в юните — пароль будет сбрасываться при каждом рестарте, а сам он останется виден в списке процессов.
Пароль не печатайте в чаты и скрипты — положите в менеджер паролей. С новым паролем возвращайтесь к предыдущему разделу и генерируйте privilege key.
Сервер у хостера, SSH нет
Арендованный TeamSpeak-сервер — это чужая машина: ни SSH, ни доступа к файлам, ни возможности перезапустить процесс с параметром. Но и ServerQuery там доступен хостеру, поэтому всё описанное выше для вас сделает он.
Порядок действий:
- Панель управления хостера. У большинства TeamSpeak-хостингов генерация нового ключа встроена: ищите кнопку вида «Privilege Key», «Admin Token», «Reset Admin». Нажали — получили ключ — ввели в клиенте через Permissions → Use Privilege Key.
- Поддержка хостера. Кнопки нет — пишите тикет: «потерян privilege key, прошу сгенерировать новый ключ на группу Server Admin». Это штатный запрос, восстановление админки владельцу сервера — обязанность хостера.
- Доступ к query-аккаунту. Некоторые хостеры выдают собственный ServerQuery-логин с правами на ваш виртуальный сервер. Тогда команды
use,servergrouplistиprivilegekeyaddиз раздела про ServerQuery выполняются под этим логином — подключение к query-порту хостер описывает в своей документации.
Не сработало ничего — значит, доступ к серверу контролирует тот, кто его оплачивает. Проверьте, на чей аккаунт оформлена аренда: частый корень проблемы — сервер заказывал участник, который ушёл из сообщества.
Как не потерять админку снова
Восстановленный доступ стоит сразу застраховать — все четыре пункта занимают десять минут.
Второй администратор. Одна идентификация — одна точка отказа. Создайте ключ для второго человека: в клиенте Permissions → Privilege Keys → Create, группа Server Admin. Пока жива хотя бы одна админская идентификация, ServerQuery не понадобится вообще.
Экспорт идентификации. В клиенте Tools → Identities, выберите свою, Export — и файл в надёжное место. При переезде на новый компьютер импортируете его, и сервер узнает вас со всеми правами. Именно несохранённая идентификация — самая частая причина «пропала админка после переустановки Windows».
Пароль serveradmin — в менеджер паролей. Вместе с ним — токен и apikey из первого запуска, если они ещё не использованы. Текстовый файл на рабочем столе переустановку системы не переживёт.
Бэкап сервера. База ts3server.sqlitedb хранит и группы, и права, и идентификации пользователей — регулярный бэкап возвращает всё это даже после гибели VDS. Скрипт и расписание — в инструкции по установке.
С этим набором потеря любого одного элемента — ключа, пароля, идентификации, даже целого сервера — перестаёт быть проблемой: каждый восстанавливается из соседнего.