Linux 自建KMS服务器

  1. KMS 简介
  2. vlmscd 介绍和安装
    1. 安装
    2. 配置 GVLK
    3. 配置使用 KMS 服务器
    4. 进行激活
    5. 激活 Office
    6. 配置 GVLK
    7. 配置使用 KMS 服务器
    8. 进行激活

KMS 简介

KMS 是一种专为中型和大型企业设计的 Microsoft 产品的激活方法。 在标准 SOHO 环境中,您在安装期间输入产品密钥,然后通过 Internet 激活产品。这是通过向 microsoft.com 上的服务器发送请求来完成的,然后该服务器授予或拒绝激活。

通过输入称为通用批量许可证密钥(GVLK)的特殊密钥(又名 “KMS 客户端密钥”),产品不再要求 Microsoft 服务器进行激活,而是通常驻留在公司内部网中的用户定义服务器(称为 KMS 服务器)。 Microsoft 仅将其 KMS 服务器提供给签署了所谓 “选择合同” 的公司。

KMS 激活大家应该比较熟悉,网上的激活工具基本都是使用 KMS 激活的,激活的期限一般是 180 天。不过激活工具相当于开了一个 KMS 服务器运行在你的电脑上,每过 180 天,系统会自动连接激活服务器进行激活,所以只要 KMS 服务器还在就不用担心失效的问题。如果 KMS 不在了,换一个即可,180 天总能找到一个,或者像本文这样自建一个就不怕失效了。

vlmscd 介绍和安装

vlmcsd 是完全与 Microsoft 兼容的 KMS 服务器,是 KMS 服务器的一个独立开源实现,可供所有人使用。可为客户端提供产品激活服务,是 Microsoft KMS 服务器的直接替代品。可以在 Windows 和 Linux 上运行。可以运行在大多数嵌入式系统上,如路由器,NAS,移动电话,平板电脑,电视,机顶盒等。相对于 Microsoft KMS 服务器仅激活客户已支付的产品,vlmcsd 从不拒绝激活。

虽然 vlmcsd 既不需要激活密钥也不需要付费,但它并不是宣扬盗版 Windows。 其目的是确保合法副本的所有者可以无限制地使用他们的软件。例如,如果购买新计算机或主板,由于硬件更改,密钥将无法从 Microsoft 服务器激活,这种情况下可以通过使用 vlmcsd 激活来继续使用。

项目地址:Wind4/vlmcsd
docker镜像地址:mikolatero/vlmcsd

安装

脚本安装

#!/bin/bash

# 定义脚本变量
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
STAT=2

# Debian系列操作系统安装KMS
do_debian(){
apt-get install gcc git make -y
rm -rf /usr/local/kms
mkdir /usr/local/kms
cd /usr/local/kms
git clone https://github.com/Wind4/vlmcsd.git
cd vlmcsd
make
cd bin
mv vlmcsd /usr/local/kms/kms
cd /usr/local/kms/
rm -rf ./vlmcsd/
mv kms vlmcsd
echo "KMS服务安装成功!"
}

# Centos系列操作系统安装KMS
do_centos(){
yum install gcc git make -y
rm -rf /usr/local/kms
mkdir /usr/local/kms
cd /usr/local/kms
git clone https://github.com/Wind4/vlmcsd.git
cd vlmcsd
make
cd bin
mv vlmcsd /usr/local/kms/kms
cd /usr/local/kms/
rm -rf ./vlmcsd/
mv kms vlmcsd
echo "KMS服务安装成功!"
echo "Centos请自行开放1688端口"
}

# 检测KMS运行状态
check_running(){
PID=`ps -ef | grep -v grep | grep -i "vlmcsd" | awk '{print $2}'`
        if [ ! -z $PID ]; then
        STAT=0
    else
        STAT=1
    fi
}

# 重启KMS服务
do_restart(){
    check_running
    if [ $STAT = 0 ]; then
        echo "KMS服务已经运行 正在重新启动 ..."
        kill $PID
    elif [ $STAT = 1 ]; then
        echo "KMS服务未运行 正在启动 ..."
    fi
    /usr/local/kms/vlmcsd
    check_running
    if [ $STAT = 0 ]; then
        local_ip=`curl -4 ip.sb`
        echo "KMS服务 启动成功"
        echo "[Windows一句命令激活] 命令提示符(管理员):slmgr /skms ${local_ip} && slmgr /ato"
    elif [ $STAT = 1 ]; then
        echo "KMS服务 启动失败"
    fi
}

# 停止KMS服务
do_stop(){
    check_running
    if [ $STAT = 0 ]; then
            echo "正在停止 KMS服务 ..."
        kill $PID
        check_running
        if [ $STAT = 0 ]; then
            echo "停止 KMS服务 失败"
        elif [ $STAT = 1 ]; then
            echo "停止 KMS服务 成功"
            fi
        elif [ $STAT = 1 ]; then
                echo "KMS服务 未运行 取消操作"
        fi
}

# 检测KMS服务是否运行
do_status(){
    check_running
    if [ $STAT = 0 ]; then
                echo "KMS服务 正在运行"
        elif [ $STAT = 1 ]; then
                echo "KMS服务 未运行"
        fi
}

# 启动KMS服务
do_start(){
    check_running
    if [ $STAT = 0 ]; then
                echo "KMS服务 已运行 取消操作"
        exit 0;
        elif [ $STAT = 1 ]; then
                echo "正在启动 KMS服务 ..."
    /usr/local/kms/vlmcsd
    fi
        check_running
        if [ $STAT = 0 ]; then
                local_ip=`curl -4 ip.sb`
                echo "KMS服务 启动成功"
                echo "[Windows一句命令激活] 命令提示符(管理员):slmgr /skms ${local_ip} && slmgr /ato"
        elif [ $STAT = 1 ]; then
                echo "KMS服务 启动失败"
        fi
}

# 添加开机自启动服务
do_auto(){
    echo "/usr/local/kms/vlmcsd" >> /etc/rc.local
    chmod +x /etc/rc.local
    echo "已添加 开机自启动 KMS服务"
}

# 卸载KMS服务
do_uninstall(){
    do_stop
    rm -rf /usr/local/kms
    sed -i '/vlmcsd/'d /etc/rc.local
    echo "KMS服务 已卸载"
}

# 脚本菜单
case "$1" in
    debian|centos|start|stop|auto|restart|status|uninstall)
    do_$1
    ;;
    *)
    echo "缺少参数: debian | centos | start | stop | auto | restart | status | uninstall "
    ;;
esac

docker安装

$ sudo docker pull mikolatero/vlmcsd
$ sudo docker run -d -p 1688:1688 --restart=always --name vlmcsd mikolatero/vlmcsd

配置 GVLK

一般情况下,新装的系统,没有输入过其他 key 的,系统会自带 GVLK,可以忽略此步,当然做了也没有影响。输入过其他 key 的则需要此步。

将以下命令中的 Key 替换成对应系统版本的 Key。

#slmgr /ipk GVLK
#Example:
slmgr /ipk GCRJD-8NW9H-F2CDX-CCM8D-9D6T9

部分 GVLK 列表

GVLK 系统版本
TX9XD-98N7V-6WMQ6-BX7FG-H8Q99 Windows 10 Home
3KHY7-WNT83-DGQKR-F7HPR-844BM Windows 10 Home N
7HNRX-D7KGG-3K4RQ-4WPJ4-YTDFH Windows 10 Home Single Language
PVMJN-6DFY6-9CCP6-7BKTT-D3WVR Windows 10 Home Country Specific
789NJ-TQK6T-6XTH8-J39CJ-J8D3P Windows 8.1 Professional with Media Center
M9Q9P-WNJJT-6PXPY-DWX8H-6XWKK Windows 8.1 Core
7B9N3-D94CG-YTVHR-QBPX3-RJP64 Windows 8.1 Core N
BB6NG-PQ82V-VRDPW-8XVD2-V8P66 Windows 8.1 Core Single Language
NCTT7-2RGK8-WMHRF-RY7YQ-JTXG3 Windows 8.1 Core Country Specific
GNBB8-YVD74-QJHX6-27H4K-8QHDG Windows 8 Professional with Media Center
BN3D2-R7TKB-3YPBD-8DRP2-27GG4 Windows 8 Core
8N2M2-HWPGY-7PGT9-HGDD8-GVGGY Windows 8 Core N
2WN2H-YGCQR-KFX6K-CD6TF-84YXQ Windows 8 Core Single Language
4K36P-JN4VD-GDC6V-KDT89-DYFKP Windows 8 Core Country Specific

更多 GVLK 点击这里查看。

配置使用 KMS 服务器

# slmgr /skms kms-server[:tcp-port]
# Example:
slmgr /skms kms.tengwait.com:1688

将 IP 换成你的 vlmscd 所在服务器即可。1688 是默认端口,如果之前是按照本文进行配置,此端口可以不写。

进行激活

slmgr /ato

等待一会儿会看到激活成功的提示。

可以输入以下命令查看激活状态,一般显示批量激活将于 xxxx/x/x xx:xx:xx 过期,一般是 180 天或 45 天的有效期。过期后,如果 KMS 服务器还在,会自动续期的。

slmgr /xpr

激活 Office

你需要安装 Vol 版 Office 才能使用 KMS。可以去 MSDN上找一找,一般 Vol 版的文件都带 VL,文件名一般以 SW 开头。

配置 GVLK

同样,没装过 key 的,一般可以忽略此步。

将以下命令中的 Key 替换成对应软件版本的 Key。

if exist "C:\Program Files (x86)\Microsoft Office\Office14\ospp.vbs" (cd "C:\Program Files (x86)\Microsoft Office\Office14") else (cd "c:\Program Files\Microsoft Office\Office14")
if exist "C:\Program Files (x86)\Microsoft Office\Office15\ospp.vbs" (cd "C:\Program Files (x86)\Microsoft Office\Office15") else (cd "c:\Program Files\Microsoft Office\Office15")
if exist "C:\Program Files (x86)\Microsoft Office\Office16\ospp.vbs" (cd "C:\Program Files (x86)\Microsoft Office\Office16") else (cd "c:\Program Files\Microsoft Office\Office16")
# cscript ospp.vbs /inpkey:GVLK
# Example:
cscript ospp.vbs /inpkey:YC7DK-G2NP3-2QQC3-J6H88-GVGXT

部分 GVLK 列表

GVLK 软件版本
NMMKJ-6RK4F-KMJVX-8D9MJ-6MWKP Office Professional Plus 2019
6NWWJ-YQWMR-QKGCB-6TMB3-9D9HK Office Standard 2019
B4NPR-3FKK7-T2MBV-FRQ4W-PKD2B Project Professional 2019
C4F7P-NCP8C-6CQPT-MQHV9-JXD2M Project Standard 2019
9BGNQ-K37YR-RQHF2-38RQ3-7VCBB Visio Professional 2019
7TQNQ-K3YQQ-3PFH7-CCPPM-X4VQ2 Visio Standard 2019
XQNVK-8JYDB-WJ9W3-YJ8YR-WFG99 Office Professional Plus 2016
JNRGM-WHDWX-FJJG3-K47QV-DRTFM Office Standard 2016
YG9NW-3K39V-2T3HJ-93F3Q-G83KT Project Professional 2016
GNFHQ-F6YQM-KQDGJ-327XX-KQBVC Project Standard 2016
PD3PC-RHNGV-FXJ29-8JK7D-RJRJK Visio Professional 2016
7WHWN-4T7MP-G96JF-G33KR-W8GF4 Visio Standard 2016

更多 GVLK 点击这里查看。

配置使用 KMS 服务器

将 IP 换成你的 vlmscd 所在服务器即可。1688 是默认端口,如果之前是按照本文进行配置,第二条命令可以不写。

# cscript ospp.vbs /sethst:kms-server
# Example:
cscript ospp.vbs /sethst:kms.tengwait.com
# cscript ospp.vbs /setprt:tcp-port
# Example:
cscript ospp.vbs /setprt:1688

进行激活

cscript ospp.vbs /act

等一会儿会显示激活成功。

可以输入以下命令查看激活状态,一般是 180 天或 45 天的有效期。过期后,如果 KMS 服务器还在,会自动续期的。

cscript ospp.vbs /dstatus

转载请注明来源