Open-source проект vlmcsd на GitHub (https://github.com/Wind4/vlmcsd) позволяет запустить эмулятор сервера активации Microsoft KMS на платформах, отличных от Windows Server. Такой KMS сервер можно запустить на Linux, Android, FreeBSD, Solaris, Mac OS и т.д. В статье мы рассмотрим, как установить KMS сервер vlmcsd в Linux (в том числе как сервис systemd и в виде docker контейнер) и использовать его для активации компьютеров с Windows, Windows Server, Microsoft Office, Project и Visio.
Прежде чем приступать, рекомендуем вспомнить как работает технология корпоративной KMS активации Microsoft (FAQ по KMS активации в Windows).
- Сэкономить на лицензиях Windows Server для хоста KMS
- Позволит заменить KMS сервер Windows в компаниях РФ на время санкций для активации ранее приобретённых продуктов Microsoft (в том числе по параллельном импорту)
В этой статье мы опишем, как установить KMS сервер на хост с Debian 13, в Rocky Linux 8 (RHEL-подобный rpm-based дистрибутив), а также запуск vlmcsd в Docker контейнере.
Установка KMS сервера vlmcsd на Debian
KMS сервер vlmscd доступен на GitHub в виде исходных файлов, поэтому сначала придется собрать его исходников (рекомендуется производить сборку на отдельной системе с аналогичной архитектурой).
Для сборки нужно установить ряд пакетов:
# apt install git build-essential debhelper -y
Создаем каталог для сборки пакета и копируем в него исходники с GitHub:
# mkdir ~/vlmcsd-src
# cd ~/vlmcsd-src
# git clone https://github.com/Wind4/vlmcsd
# cd ~/vlmcsd-src/vlmcsd
Дополнительно копируем файлы, необходимые для сборки пакета под Debian:
# git submodule update --init debian
Запускаем сборку deb-пакета:
# dpkg-buildpackage -rfakeroot -D -us -uc
Проверьте, что пакет собран (в вышестоящем каталоге появится пакет vlmcsd_1113_amd64.deb):
Устанавливаем собранный deb пакет на рабочем сервере:
# dpkg -i ./vlmcsd_1113_amd64.deb
Проверяем, что в системе появилась служба vlmcsd.service:
# systemctl status vlmcsd
Создаем каталог для логов службы KMS:
# mkdir /var/log/vlmcsd
# touch /var/log/vlmcsd.log
В конфигурационном файле /etc/vlmcsd/vlmcsd.ini укажем путь к лог-файлу:
# nano /etc/vlmcsd/vlmcsd.ini
LogFile = /var/log/vlmcsd/vlmcsd.log
Создадим пользователя для запуска службы:
# useradd -s /usr/sbin/nologin -r -M vlmcsd
Дать права на лог файл:
# chown vlmcsd:vlmcsd /var/log/vlmcsd.log
В параметрах службы указываем запуск от имени пользователя vlmcsd:
# systemctl edit vlmcsd.service
[Service] User=vlmcsd Group=vlmcsd
Перезапускаем службу:
# systemctl daemon-reload
# systemctl restart vlmcsd.service
Проверяем что служба теперь запущена от пользователя:
# ps -aux | grep vlmcsd
Проверяем лог:
# cat /var/log/vlmcsd.log
Проверяем что vlmcsd слушает на стандартном KMS порту 1688:
# ss -lnptu | grep 1688
Запуск KMS сервера на RHEL-подобном дистрибутиве Linux
Рассмотрим, как вручную собрать и установить vlmcsd службу на RHEL-подобном дистрибутиве Linux (Rocky в этом примере).
Подключитесь к своему серверу 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
Запуск сервера KMS активации в Docker контейнере
Еще проще и быстрее можно запустить сервер активации vlmsd в Docker-контейнере. Самый популярный готовый KMS контейнер на docker hub — mikolatero/vlmcsd.
Если на хосте Docker еще не установлен, быстрее всего установить его так:
# curl https://get.docker.com -o install.sh && sh install.sh
Чтобы запускать контейнеры без команды sudo, нужно добавить своего пользователя в группе docker:
$ sudo groupadd docker$ sudo gpasswd -a ${USER} docker
$ sudo service docker restart
# Обновить группы пользователя без перезагрузки сессии
$ newgrp docker
Теперь можно скачать контейнер vlmsd:
$ docker pull mikolatero/vlmcsd
Запуск контейнера:
$ docker run -d -p 1688:1688 --restart=always --name vlmcsd mikolatero/vlmcsd
По умолчанию программа vlmcsd работает на стандартном порту TCP/1688. Docker сам пробрасывает нужный порт.
Активация компьютеров с Windows/Office через KMS сервер на Linux
Если у вас используется Microsoft DNS, вы можете создать в вашей доменной зоне _VLMCS запись для автоматического поиска KMS сервера клиентами домене. Для создания записи в DNS используйте такую команду PowerShell:
Add-DnsServerResourceRecord -Srv -Name "_VLMCS._tcp" -ZoneName "winitpro.ru" -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 11 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
Во всплывающем окне должна появится надпись об успешной активации Windows:
Product activated successfully
Проверить статус активации 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 2021/2019/2016/2013. Для этого используется встроенный скрипт ospp.vbs:
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 2025 и 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
Чем-то чревато?
Делом Поносова)
А в докере как включить лог?