На GitHub есть интересный open source проект vlmcsd (https://github.com/Wind4/vlmcsd) для эмуляции сервера KMS активации Microsoft. Вы можете использовать его для развертывания собственного KMS сервера на платформах, отличных от Windows Server (тем самым можно сэкономить на лицензии Windows Server, если вы его не используете). Такой KMS сервер можно установить на Linux, Android, FreeBSD, Mac OS. В этой статье мы покажем, как установить KMS сервер на базе vlmcsd в CentOS Linux и использовать его для сетевой активации компьютеров с десктопными версиями Windows, Windows Server и Microsoft Office.
Прежде чем начать, рекомендуем познакомится с технологией корпоративной KMS активации Microsoft. Почти вся необходимая информация есть в статье FAQ по KMS активации в Windows.
В данном примере мы используем CentOS 8 для установки KMS сервера, но вы можете использовать и другие ОС, например, Ubuntu, Debian, RHEL или даже ваш NAS (есть примеры успешной установки на NAS сервер Synology).
Подключитесь к своему серверу Linux и воспользуйтесь менеджером пакетов yum (dnf) для установки пакеты git и gcc:
# dnf update
# dnf install git gcc
Теперь скопируйте и установите пакет vlmcsd:
# git clone https://github.com/Wind4/vlmcsd
# cd vlmcsd
# make
Перейдите в каталог bin:
# cd bin
Запустите KMS сервер:
# ./vlmcsd
Должно появится сообщение:
Connecting to 127.0.0.1:1688 ... successful Sending activation request (KMS V6) 1 of 1 -> 55041-00206-559-475403-03-1076-6002.0000-1482020 (3A1C049600B60076)
Это значит, что вы успешно скомпилировали и запустили KMS сервер на Linux.
По умолчанию vlmcsd слушает на стандартном порту KMS — TCP/1688. Поэтому вам нужно открыть порт в файерволе Linux, чтобы разрешить клиентам подключаться к нему. Для firewalld выполните следующие команды:
# firewall-cmd --zone=public --permanent --add-port=1688/tcp
# firewall-cmd –reload
Проверьте что порт 1688 открыт:
# firewall-cmd --list-port
# netstat -ntlp | grep LISTEN
Чтобы не запускать vlmcsd вручную, вы можете создать собственный демон, которым можно управлять через systemd.
#cp vlmcsd /usr/bin
# cp vlmcs /usr/bin
# touch /etc/systemd/system/kms-script.service
# chmod 664 /etc/systemd/system/kms-script.service
# nano /etc/systemd/system/kms-script.service
Добавьте в файл следующее описание сервиса:
[Unit] Description=Microsoft KMS Server After=network.target After=network-online.target Wants=network-online.target [Service] Type=oneshot ExecStart=/usr/bin/vlmcsd RemainAfterExit=yes LimitNOFILE=65536 [Install] WantedBy=multi-user.target
Осталось запустить службу KMS и добавить ее в автозагрузку:
# systemctl daemon-reload
# systemctl start kms-script.service
# systemctl status kms-script.service
# systemctl enable kms-script.service
Расширенные настройки KMS сервера можно задать с помощью файла vlmcsd.ini (есть образец в каталоге ../vlmcsd/etc/. Тамже можно задать путь к файлу с логами KMS сервера (vlmcsd.log). Можно указать пути к файлам в аргументах запуска vlmcsd с помощью параметров:
-i /etc/vlmcsd.ini
-l /var/log/vlmcsd.log
sudo docker pull mikolatero/vlmcsd
sudo docker run -d -p 1688:1688 --restart=always --name kms_server mikolatero/vlmcsd /vlmcsd -D -d -t 3 -e -v -R172800 -A10080
Если у вас используется Microsoft DNS, вы можете создать _VLMCS запись для автоматического поиска KMS сервера клиентами в домене. Для создания записи в DNS используйте такую команду PowerShell:
Add-DnsServerResourceRecord -Srv -Name "_VLMCS._tcp" -ZoneName "winitpro.ri" -DomainName "192.168.14.147" -Priority 0 -Weight 0 -Port 1688
Где
192.168.14.147
– IP адрес вашего Linux сервера со службой KMS.
Теперь все хосты Windows (и Office) в домене будут автоматически активироваться на KMS сервере, если на них установлен публичный ключ корпоративной активации (GVLK). Полный список GVLK (Generic Volume License Keys) ключей для активации всех доступных версий Windows доступен на сайте Microsoft https://docs.microsoft.com/en-us/windows-server/get-started/kms-client-activation-keys.
Например, на этой странице найдите GVLK ключи для активации Windows Server 2022 Standard (VDYBN-27WPP-V4HQT-9VMD4-VMK7H) и Windows 10 Pro (W269N-WFGWX-YVC9B-4J6C9-T83GX).
Для ручной активации Windows нужно задать GVLK ключ для вашей версии Windows, адрес сервера KMS активации и выполнить команду активации. Используются следующие команды (например, для Windows Server 2022 Std):
slmgr.vbs -ipk VDYBN-27WPP-V4HQT-9VMD4-VMK7H
slmgr.vbs -skms 192.168.14.147
slmgr.vbs -ato
После того, как вы выполните последнюю команду, появится надпись
Product activated successfully
. Это значит ваша копия Windows успешно активирована.
Проверить статус активации Windows можно командой:
slmgr.vbs -dlv
Error: 0xC004F069 On a computer running Microsoft Windows non-core edition, run 'slui.exe 0x2a 0xC004F069' to display the error text.
Причина в том, что у меня установлена ознакомительная (Evaluation) версия Windows Server 2022. Сначала нужно конвертировать ее в полноценную Standard согласностатье:
dism /online /set-edition:serverstandard /productkey:VDYBN-27WPP-V4HQT-9VMD4-VMK7H /accepteula
И только после этого можно активировать Windows.
Аналогичным образом вы можете активировать на KMS сервере корпоративные версии Microsoft Office 2019/2016/2013. Для этого используются такие команды:
cd C:\Program Files\Microsoft Office\Office16
cscript ospp.vbs /sethst: 192.168.14.147
cscript ospp.vbs /act
Проверить статус активации Office можно так:
cscript ospp.vbs /dstatusall
Итак, мы показали, как развернуть KMS сервер на Linux, на котором можно активировать все версии Windows включая последние Windows Server 2022 и Windows 11
windows server core для kms теперь платный? :\
server core это все-же платная редакция. вероятно речь о free hyper-v server? но там, насколько я помню, не было роли Volume Activation Services
Да, про free hyper-v server. Пардон.
А как активирован этот KMS сервер?
При развертывании KMS сервера на Windows, нужно его активировать, указывая KMS ключ из центра лицензирования.
Тут же получается KMS кряк какой-то в масштабах сети
Это он и есть 🙂
У вас ошибка.
В предложении «Запустите KMS сервер:» нужна команда ./vlmcsd, а потом уже запускать ./vlmcs.
Без запуска ./vlmcsd, ./vlmcs выводит «Connecting to 127.0.0.1:1688 … 127.0.0.1:1688: Connection refused
Fatal: Could not connect to any KMS server»
Да, верно. Нужно сервис запускать vlmcsd
После команды #make пишет команда не найдена. Какие варианты решения существуют?
Думаю, прочто нужно поставить make. В зависимости от дистрибутива:
yum install make
или
apt-get install make
Или сразу все инструменты компиляции:
yum groupinstall "Development tools"
apt-get install build-essential
Отлично! Благодарю всё получилось.
Доброе время суток! Застрял на этой команде systemctl start kms-script.service , при вводе даёт вот такой ответ
Job for kms-script.service failed because the control process exited with error code.
See «systemctl status kms-script.service» and «journalctl -xe» for details.
Причём файл с логами имеет вот такое имя «ystemctl status kms-script.service»
Помогите! Заранее благодарю!
Заглуши процесс, у тебя висит запущенный вручную kms сервер
Супер. Спасибо огромное. Поднял на ubuntu. Автору респект.
Подскажите пожалуйста, тоже хочу поднять такой сервер активации, но не понимаю до конца видимо принцип работы. Вот я к примеру настроил linux сервер, а чем Windows хосты то будут активироваться? Я же не указывал никаких ключей для их активации. Или linux-сервер их тянет из интернета сам? Будьте добрый пояснить мне информацию эту, разжевать 🙂
Это эмулятор KMS, по сути это левый метод активации. но при этом полностью рабочий )
Спасибо. Сервер активации за 30мин.
Поднял ubuntu 20.04, установил docker, запустил контейнер. DNS запись не стал создавать, просто распространил через GPO настройки реестра.
добавил 4 ветки реестра.
Для активации Windows
Действие — Заменить. Если его не будет, то будет создан заново
Куст — HKEY_LOCAL_MACHINE
Путь раздела — SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform
Имя параметра — KeyManagementServiceName
Тип параметра — REG_SZ
Значение — FQDN имя сервера KMS
Действие — Заменить. Если его не будет, то будет создан заново
Куст — HKEY_LOCAL_MACHINE
Путь раздела — SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform
Имя параметра — KeyManagementServicePort
Тип параметра — REG_SZ
Значение — 1688
Для Активации Ofiice
Действие — Заменить. Если его не будет, то будет создан заново
Куст — HKEY_LOCAL_MACHINE
Путь раздела — SOFTWARE\Microsoft\OfficeSoftwareProtectionPlatform
Имя параметра — KeyManagementServiceName
Тип параметра — REG_SZ
Значение — FQDN имя сервера KMS
Действие — Заменить. Если его не будет, то будет создан заново
Куст — HKEY_LOCAL_MACHINE
Путь раздела — SOFTWARE\Microsoft\OfficeSoftwareProtectionPlatform
Имя параметра — KeyManagementServicePort
Тип параметра — REG_SZ
Значение — 1688
На здоровье 🙂
Привет!
cd C:\Program Files\Microsoft Office\Office16
cscript ospp.vbs /sethst: 192.168.14.147
cscript ospp.vbs /act
А где ключ взять и куда его вписывать ?
как то так
cd C:\Program Files\Microsoft Office\Office16
cscript ospp.vbs /inpkey:XQNVK-8JYDB-WJ9W3-YJ8YR-WFG99
cscript ospp.vbs /sethst:10.243.1.2
cscript ospp.vbs /act
Нужно чтобы на компьютере была установлена volume версия office. Если установлена retail, ее можно сконвертировать с помощью GVLK ключа. Список публичных ключе есть в статье
https://winitpro.ru/index.php/2019/08/14/kms-aktivaciya-ms-office-volume-license/
Установил на VPS. Какое-то время работал нормально, а потом провайдеру VPS пришло письмо от MS с требованием удалить. Мониторят, шельмы.
телеметрия
спасибо что предупредили!
а порт 1688 для всего интернета открыт был?
Приветствую!
Как на данный сервер добавить ключи?
Чтобы клиенты их подхватывали автоматически?
Кажись дошло. Надо запускать процедуру установки ключа и последующую активацию на соответствующих компах / серверах, где и указывается KMS-сервер.
Правильно я понял?
Да, верно.
На каждом клиенте нужно указать ключ, адрес KMS сервера и выполнить активацию
Установка публичного KMS ключа (GVLK) в Windows (нужно указавать GVLK ключ в зависимости от версии и редакции Windows):
slmgr.vbs /ipk xxxxx-xxxxx-xxxxx-xxxxx-xxxxx
Вручную указать имя KMS сервера и порт:
slmgr.vbs /skms kms-server.winitpro.ru:1688
Выполнить активацию Windows на указанном KMS-сервере:
slmgr.vbs /ato
https://winitpro.ru/index.php/2015/03/13/faq-po-kms-aktivacii-produktov-microsoft/#comment-92578
Спасибо!
Здравствуйте. Всё сделал, всё работает. Собственно вопрос, как это всё автоматизировать?
Ручками всё работает…Но лично вообще не вижу смысла всё это делать вручную…
Записи в dns все прописал…
Если компьютеры в домене и могут сами обранужить найти VLMSC запись KMS сервера (
nslookup -type=srv _vlmcs._tcp.winitpro.ru
), то клиенты должны автоматически активироваться на нем.Главное требование, чтобы на них был прописан GVLK клюк активации.
_https://learn.microsoft.com/en-us/windows-server/get-started/kms-client-activation-keys
Можно раскаать ключ через GPO/ PowerShell Remoting, и т.д.
Почему-то не могу ответить на Ваш комментарий…Не совсем понял, какой именно ключ (полно же ключей) и где должен быть прописан?…
Добрый день, спасибо за статью. Подскажите как сделать так что бы активировались только определенные продукты (MSO2016 и WinServer2016) и им выдавались реально купленные до этого ключи. И как можно собрать статистику кому выданы лицензии?
Вам проще использовать официальную утилиту от Microsoft — VAMT для централизованного управления всеми ключами активации в сети
Столкнулся с сложностями при попытке настроить ADBA, ключи перестали проходить валидацию при их активации у MS. По этому и было принято решение о собственном KMS, но с возможностью отслеживать количества выданных и свободных лицензий. В данном решении это никак нельзя сделать?
в vlmcsd со статистикой вроде было не очень, но я особо не разбирался.
Я не помню, собирает ли VAMT статус активции, попробуйте сами.
Ну или можно PowerShell скриптами собрать с компьютеров статус активации
https://winitpro.ru/index.php/2015/08/17/proverka-statusa-aktivacii-windows-10/
Подскажите, KMS сервер активирует хост на 180 дней, что будет, если после 180 дней, например сервер KMS будет не доступен?
Появится надпись Windows не активирована, не будут доступны некоторые настройки персонализации в панели управления. Но в целом, система будет рабочей.
при вводе команды systemctl start kms-script.service выдает ошибку Job for kms-script.service failed because the control process exited with error code. See «systemctl status kms-script.service» and «journalctl -xe» for details
делал всё пошагово по-инструкции.
Что в
systemctl status kms-script.service
иjournalctl -xe
? какой дистрибутив Linux?Скорее всего при создании сервис сам поднялся.
Смотри что с портами\сервисом:
netstat -ntlp | grep LISTEN
Если слушает 1913/vlmcsd
Создай службу и ребутни сервер, как поднимится, пробуй стартануть службу.
Ну и как правильно посоветовали смотри:
systemctl status kms-script.service
А как бы посмотреть, сколько прошло активаций на КМС сервере?
docker run -d -p 1688:1688 —restart=always —name vlmcsd mikolatero/vlmcsd
Быстрый запуск в докере
1. Ставим Ubuntu
2. Ставим Docker
3. Устанавливаем и запускаем имидж: https://hub.docker.com/r/pykmsorg/py-kms
Команда:
docker run -d --name py-kms --restart always -p 1688:1688 ghcr.io/py-kms-organization/py-kms
4. Прописываем DNS-запись типа A для вашего сервера
5. Прописываем в AD: _https://it-35.ru/windows/352.html
6. Используем Volume-ключи: https://winitpro.ru/index.php/2019/02/13/kms-aktivaciya-windows-server-2019/
P. S. Для справки: _https://github.com/py-kms-organization/py-kms/pkgs/container/py-kms
#kms #activation #microsoft #office
to Иван 19.09.2023
Для работы KMS активации на хостах Windows нужно установить GVLK ключ в зависимости от версии и редакции Windows. Его можно установить вручную командой:
slmgr /ipk W269N-WFGWX-YVC9B-4J6C9-T83GX
(например, для Windows 10/11 PRO)
Можно раскатать эту команду через логон скрипт GPO или любой другой автоматизацией.
ПОсле этого клиенты долны обнаружить запись KMS в DNS и выполнить активацию
Замечательная статья.
KMS ключи нужны только для «ручной» активации?
Да. если вездле volume версии и в dns есть vlsc запись — все активируется само
Здравствуйте, может подскажите как можно отследить кто подключён к серверу активации? буду очень благодарен ответу, Статья очень круто написана спасибо, поднял за 30 мин
Раньше у не было статистики. Скорее всего это не изменилось. Как вариант, логи vlmcsd парсить
можно включить логи и читать вот например так видно кто подключался
cat ./vlmcsd.log | grep Workstation
apt-get install -y build-essential unzip
wget https://github.com/Wind4/vlmcsd/archive/refs/heads/master.zip —output-document=vlmcsd.zip
unzip vlmcsd.zip
cd vlmcsd-master
gmake
mkdir /etc/vlmcs
cp etc/vlmcsd.ini /etc/vlmcs/
cp etc/vlmcsd.kmd /etc/vlmcs/
cp bin/vlmcs /usr/bin/
cp bin/vlmcsd /usr/bin/
cp man/vlmcs.1 /usr/share/man/man1/
cp man/vlmcsd.ini.5 /usr/share/man/man5/
cp man/vlmcsd.7 /usr/share/man/man7/
cp man/vlmcsd.8 /usr/share/man/man8/
# Create VLCSD Service
cat > /etc/systemd/system/vlmcsd.service << EOF
[Unit]
Description=VLCSD (KMS Emulator in C)
After=network.target
[Service]
Type=simple
User=nobody
Group=nogroup
ExecStart=/usr/bin/vlmcsd -i /etc/vlmcs/vlmcsd.ini -D
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload; systemctl reenable vlmcsd; systemctl restart vlmcsd
# firewall-cmd –reload
нужно firewall-cmd —–reload
Чем-то чревато?
Делом Поносова)