Запускаем KMS сервер на Linux для активации Windows/ Office

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 или Office. Проект WinITPro не поддерживает использование нелицензионного ПО ни в каком виде. В текущих условиях такой KMS сервер позволит:

  • Сэкономить на лицензиях 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):

сборка пакета vlmcsd для debian

Устанавливаем собранный deb пакет на рабочем сервере:

# dpkg -i ./vlmcsd_1113_amd64.deb

установка службы vlscsd deb пакет

Проверяем, что в системе появилась служба vlmcsd.service:

# systemctl status vlmcsd

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

vlmcsd.ini конфигурационный файл

Создадим пользователя для запуска службы:

# 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

запуск vlscsd от пользователя

Перезапускаем службу:

# systemctl daemon-reload
# systemctl restart vlmcsd.service

Проверяем что служба теперь запущена от пользователя:

# ps -aux | grep vlmcsd

ps-aux grep-vlmcsd

Проверяем лог:

# cat /var/log/vlmcsd.log

Проверяем что vlmcsd слушает на стандартном KMS порту 1688:

# ss -lnptu | grep 1688

vlscsd слушает на KMS порту 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

установка vlmcsd в centos linux - эмулятор KMS сервера

# cd vlmcsd
# make

компиляция vlmcsd

Перейдите в каталог bin:

# cd bin

Запустите KMS сервер:

# ./vlmcsd

запуск vlmcs KMS сервера в Linux

Должно появится сообщение:

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

открыть порт TCP 1688 для KMS

Чтобы не запускать 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 сервера в Linux CentOS

Расширенные настройки 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

Запуск KMS эмулятора vlmcsd в docker контейнере

По умолчанию программа 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

slmgr.vbs команды активации Windows на KMS сервере

Проверить статус активации Windows на компьютере можно командой:
slmgr.vbs -dlv

В моем примере при активации Windows Server появилась ошибка:

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.


Предыдущая статья Следующая статья


Комментариев: 53 Оставить комментарий

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Я не робот( Обязательно отметьте)