分类 Linux 下的文章

树莓派使用vlmcsd自建KMS服务~一句命令激活windows/office


为了廉价,又用的树莓派,说真的,我家的树莓派真的惨。。。。
win10下载地址:https://www.microsoft.com/zh-cn/software-download/windows10
好了,正题开始
vlmcsd是用c写的开源KMS模拟器,效率高且安全可靠。可用来替代旧的python版和闭源版服务。
已经有不少x64平台的镜像,但ARM平台的机器是不能直接拿来用的,所以我弄了支持ARM机器的镜像。
目前支持架构:

用Docker部署KMS服务器(支持ARM平台)

arm64v8:64位ARM平台,如树莓派3b群晖DS218play,威联通TS-212P3等
arm32v7:32位ARM平台,如树莓派2,树莓派3等
amd64:x64平台,如群晖DS218+等

宝塔操作就简单了,之后可能会写个源码安装docker

1.首先后去镜像
命令行:docker pulln mjysci/vlmcsd:arm64v8
宝塔直接拉取:mjysci/vlmcsd:arm64v8
2.新建容器:
命令行:docker run -dn -p 1688:1688 --restart=on-failure:5 --name vlmcsd mjysci/vlmcsd:arm64v8
宝塔直接创建容器:端口添加1688其他默认就好
QQ截图20200604214246.jpg

激活windows

VL版本的镜像一般内置GVLK key,可以直接省略第一步和第二步。
kms激活的前提是你的系统是批量授权版本,即VL版,一般企业版都是VL版,专业版有零售和VL版,家庭版旗舰版OEM版等等那就肯定不能用kms激活。一般建议从msdn上面下载系统.
VL版本的镜像一般内置GVLK key,用于kms激活。如果你手动输过其他key,那么这个内置的key就会被替换掉,这个时候如果你想用kms,那么就需要把GVLK key输回去。首先,到微软中获取key获取你对应版本的KEY

slmgr /upk
slmgr /ipk W269N-WFGWX-YVC9B-4J6C9-T83GX
slmgr /skms kms.bug-maker.com
slmgr /ato

激活office

OFFICE必须是VOL版本

PS C:\Program Files\Microsoft Office\Office16> cscript ospp.vbs /inpkey:NMMKJ-6RK4F-KMJVX-8D9MJ-6MWKP
Microsoft (R) Windows Script Host Version 5.812
版权所有(C) Microsoft Corporation。保留所有权利。

---Processing--------------------------
---------------------------------------
<Product key installation successful>
---------------------------------------
---Exiting-----------------------------
PS C:\Program Files\Microsoft Office\Office16> cscript ospp.vbs /act
Microsoft (R) Windows Script Host Version 5.812
版权所有(C) Microsoft Corporation。保留所有权利。

---Processing--------------------------
---------------------------------------
Installed product key detected - attempting to activate the following product:
SKU ID: 85dd8b5f-eaa4-4af3-a628-cce9e77c9a03
LICENSE NAME: Office 19, Office19ProPlus2019VL_KMS_Client_AE edition
LICENSE DESCRIPTION: Office 19, VOLUME_KMSCLIENT channel
Last 5 characters of installed product key: 6MWKP
ERROR CODE: 0xC004F074
ERROR DESCRIPTION: The Software Licensing Service reported that the product could not be activated. No Key Management Service (KMS) could be contacted. Please see the Application Event Log for additional information.
To view the activation event history run: cscript ospp.vbs /dhistorykms
NOTICE: A KB article has been detected for activation failure: 0xC004F074
FOR MORE INFORMATION PLEASE VISIT: https://support.microsoft.com/kb/2870357#Error0xC004F074
---------------------------------------
---------------------------------------
---Exiting-----------------------------
PS C:\Program Files\Microsoft Office\Office16> cscript ospp.vbs /sethst:kms.bug-maker.com
Microsoft (R) Windows Script Host Version 5.812
版权所有(C) Microsoft Corporation。保留所有权利。

---Processing--------------------------
---------------------------------------
Successfully applied setting.
---------------------------------------
---Exiting-----------------------------
PS C:\Program Files\Microsoft Office\Office16> cscript ospp.vbs /act
Microsoft (R) Windows Script Host Version 5.812
版权所有(C) Microsoft Corporation。保留所有权利。

---Processing--------------------------
---------------------------------------
Installed product key detected - attempting to activate the following product:
SKU ID: 85dd8b5f-eaa4-4af3-a628-cce9e77c9a03
LICENSE NAME: Office 19, Office19ProPlus2019VL_KMS_Client_AE edition
LICENSE DESCRIPTION: Office 19, VOLUME_KMSCLIENT channel
Last 5 characters of installed product key: 6MWKP
<Product activation successful>
---------------------------------------
---------------------------------------
---Exiting-----------------------------
PS C:\Program Files\Microsoft Office\Office16> cscript ospp.vbs /dstatus
Microsoft (R) Windows Script Host Version 5.812
版权所有(C) Microsoft Corporation。保留所有权利。

---Processing--------------------------
---------------------------------------
PRODUCT ID: 00414-50000-00000-AA844
SKU ID: 85dd8b5f-eaa4-4af3-a628-cce9e77c9a03
LICENSE NAME: Office 19, Office19ProPlus2019VL_KMS_Client_AE edition
LICENSE DESCRIPTION: Office 19, VOLUME_KMSCLIENT channel
BETA EXPIRATION: 1601/1/1
LICENSE STATUS:  ---LICENSED---
ERROR CODE: 0x4004F040 (for information purposes only as the status is licensed)
ERROR DESCRIPTION: The Software Licensing Service reported that the product was activated but the owner should verify the Product Use Rights.
REMAINING GRACE: 180 days  (259200 minute(s) before expiring)
Last 5 characters of installed product key: 6MWKP
Activation Type Configuration: KMS
        DNS auto-discovery: KMS name not available
        KMS machine registry override defined: kms.bug-maker.com:1688
        Activation Interval: 120 minutes
        Renewal Interval: 10080 minutes
        KMS host caching: Enabled
---------------------------------------
---------------------------------------
---Exiting-----------------------------

跨平台密码管理器-bitwarden_rs安装与使用


前言

有人用过1password,但是对于贫穷的我来说真的很贵,那咱就找找开源,免费,跨平台,安全,好管理,好用,能自动填充密码的密码管理解决方案。LastPass和Bitwarden就是开源方案的代表,但是LastPass的跨平台体验较差,使我最终选择Bitwarden。

bitwarden_rs安装教程

对应网站:
官网:https://bitwarden.com/
第三方开源项目:https://github.com/dani-garcia/bitwarden_rs

Bitwarden官方推荐使用Docker镜像安装,但是Bitwarden 服务器使用 .Net 开发,如果使用 Docker 来部署,镜像体积过大;此外它使用 MSSQL 数据库,部署这个数据库对服务器配置要求比较高。

而bitwarden_rs是第三方开发的Bitwarden安装镜像。bitwarden_rs采用 Rust 实现了 Bitwarden服务器,这个实现更进一步降低了对机器配置的要求,并且 Docker 镜像体积很小,部署非常方便。此外,官方服务器中需要付费订阅的一些功能,在这个实现中是免费的。测试在1024MB内存上机子完美运行bitwarden_rs。

硬件要求

本人准备把bitrs放在家里的树莓派中,4h1g的树莓派3b+,本人家里有公网ip,外网80等端口也可访问,主要是为了降低成本,所以直接再树莓派中安装。

软件要求

树莓派安装的宝塔,一切就变得简单了,首先是需要一个docker,在宝塔的插件中安装docker
(由于是树莓派,安装是真的慢)

安装步骤

直接拉取bitwardenrs/server:raspberry的docker镜像
微信截图_20200528110615.png
或者
具体的命令行就需要操作这两行,因为再宝塔中创建的容器参数不能调整,所以用命令行。

sudo docker pull mprasil/bitwarden:raspberry
sudo docker run -d --restart=always --name bitwarden -v /bw--data/:/data/ -p 8880:80 mprasil/bitwarden:raspberry

代理

其实安装完容器就已经能用了,但是还是需要个域名,那咱就再宝塔中新建个站点来代理访问
首先创建个空白的静态站,然后在申请个ssl,在设置中设置代理就ok了
微信截图_20200528105142.png

使用

经过初始化和设置最终进入网页版后台:
微信截图_20200528105645.png

在chrome上安装扩展之后的使用

微信截图_20200528111527.png

效果

具体的把还得自己感觉舒服才叫好,我就上个自己用的图把。
微信截图_20200528125622.png


GIT: HEAD处于游离的状态的解决办法


在git下将代码回退到某一历史版本,修改后push提醒detaced head,即处于游离状态,使用 git branch命令(辅助git status查看提交状态)查看:
1.png

在git bash下切换到项目根路径下执行以下步骤来解决:

  1. 创建一个临时分支:
git branch tmp  bf0040f(在游离状态下提交commit会产生新的ID,如图bf0040f,应以新的ID为准)

创建分支的命令:git branch 分支名 操作的ID,此时并没有切换到tmp分支上去,但是tmp分支上的内容就跟最后提交的bf0040f一样。

  1. 切换到需要合并的分支(例如master):
git checkout master
  1. 切换了分支之后我们需要将tmp合并到检出的分支(master):
git merge tmp

最后我们只需要push对应的master分支中提交的信息。

  1. 删除刚刚创建的临时分支
git branch -d tmp

宝塔Webhook脚本实现多git项目自动部署


之前写大部分只能针对一个项目来部署,这回改成多个项目自动部署。

#!/bin/bash
echo ""
#输出当前时间
date --date='0 days ago' "+%Y-%m-%d %H:%M:%S"
echo "Start"
#判断宝塔WebHook参数是否存在
if [ ! -n "$1" ];
then
          echo "param参数错误"
          echo "End"
          exit
fi
#解析参数 例abc/efg
param="$1"
obj_user=${param%\/*}
obj_name=${param#*\/}
#git项目路径
gitPath="/www/wwwroot/we7.71yunduan.top/addons/$obj_name/"
if [ ! -d "$gitPath" ]; then
        mkdir $gitPath
fi
#git 网址
gitHttp="git@gitlib.71yunduan.top:$obj_user/$obj_name.git"
 
echo "Web站点路径:$gitPath"
echo "Git项目地址:$gitHttp"
 
#判断项目路径是否存在
if [ -d "$gitPath" ]; then
        cd $gitPath
        #判断是否存在git目录
        if [ ! -d ".git" ]; then
                echo "在该目录下克隆 git"
                git clone $gitHttp gittemp
                mv gittemp/.git .
                rm -rf gittemp
        fi
        #拉取最新的项目文件
        git reset --hard origin/master
        git pull
        #设置目录权限
        chown -R www:www $gitPath
        echo "End"
        exit
else
        echo "该项目路径不存在"
        echo "End"
        exit
fi

apache开启.htaccess及.htaccess的使用方法_给服务器添加配置


如何让的本地APACHE器.htaccess

如何让的本地APACHE器.htaccess呢?其实只要简朴修改一下apache的httpd.conf设置就让APACHE.htaccess了,来看看操作

打开httpd.conf(在那里? APACHE目录的CONF目录里面),用文本编纂器打开后,查找
(1)
Options FollowSymLinks
AllowOverride None

改为
Options FollowSymLinks
AllowOverride All

htaccess 写法

  Apache中的.htaccess(或者”分布式配置”了针对目录改变配置的方法,即,在特定的文档目录中放置包含或多个指令的,以作用于此目录及其子目录。作为,所能的命令受到限制。*Apache的AllowOverride指令来设置。

子目录中的指令会笼盖更高级目录或者主器配置中的指令。

.htaccess必需以ASCII模式上传,最好将其权限设置为644。

错误文档的定位

常用的客户端哀求错误返回代码:
401 Authorization Required
403 Forbidden
404 Not Found
405 Method Not Allowed
408 Request Timed Out
411 Content Length Required
412 Precondition Failed
413 Request Entity Too Long
414 Request URI Too Long
415 Unsupported Media Type

  常见的器错误返回代码:
  500 Internal Server Error

利用.htaccess指定事先制作好的错误提醒页面。一般下,人们专门设立目录,例如errors放置页面。然后再.htaccess中,加入如下的指令:

ErrorDocument 404 /errors/notfound.html
ErrorDocument 500 /errors/internalerror.html

一条指令一行。上述第一条指令的意思是对于404,也找到所的文档的得显示页面为/errors目录下的notfound.html页面。不难看出语法格局为:

ErrorDocument 错误代码 /目录名/名.扩展名

所提示的很少的话,不必专门制作页面,直接在指令中HTML号了,例如下面例子:

ErrorDocument 401 “你权限访问该页面,请抛却!”

文档访问的密码保护

要利用.htaccess对某个目录下的文档设定访问和对应的密码,首先要做的是生成.htpasswd的文本文档,例如:

zheng:y4E7Ep8e7EYV

这里密码经由加密,找些工具将密码加密成.htaccess的编码。该文档最好不要放在www目录下,建议放在www根目录文档之外,这样更为安全些。

有了授权文档,在.htaccess中加入如下指令了:

AuthUserFile .htpasswd的器目录
AuthGroupFile /dev/null (授权访问的目录)
AuthName EnterPassword
AuthType Basic (授权类型)

是的主人,应该处处为着想。 —— 雷锋
require user wsabstract (允许访问的,但愿表中都允许, require valid-user)

注,括号部门为学习添加的注释

拒绝来自某个IP的访问

我不想某个政府部门访问到站点的,那.htaccess中加入该部门的IP而将它们拒绝在外。

例如:

order allow,deny
deny from 210.10.56.32
deny from 219.5.45.
allow from all

第二行拒绝某个IP,第三行拒绝某个IP段,也219.5.45.0~219.2.45.255

想要拒绝人?用deny from all好了。不止用IP,也用域名来设定。

  保护.htaccess文档

在.htaccess来设置目录的密码保护时,它包含了密码的路径。从安全考虑,有必要把.htaccess也保护起来,不让别人看到其中的。虽然用其他做到这点,好比文档的权限。不外,.htaccess本身也能做到,只需加入如下的指令:

order allow,deny
deny from all

URL转向

可能对重新规划,将文档了迁移,或者更改了目录。这,来自搜索引擎或者其他链接过来的访问就可能犯错。这种下,如下指令来完成旧的URL自动转向到新的:

Redirect /旧目录/旧文档名 新文档的

或者整个目录的转向:

Redirect 旧目录 新目录

改变缺省的首页

一般下缺省的首页名有default、index等。不外,有些目录中没出缺省,而是某个特定的名,好比在pmwiki中是 pmwiki.php。这种下,要记住名来访问很麻烦。在.htaccess中等闲的设置新的缺省名:

DirectoryIndex 新的缺省名

也列出多个,顺序表明它们之间的优先级别,例如:

DirectoryIndex filename.html index.cgi index.pl default.htm

防止盗链

不喜欢别人在的网页上连接的、文档的话,也htaccess的指令来做到。

所的指令如下:

RewriteEngine on
RewriteCond %{ HTTP_REFERER } !^$
RewriteCond %{ HTTP_REFERER } !^http://(www.)?mydomain.com/.*$ [NC]
RewriteRule .(gif&line;jpg)$ - [F]

觉得让别人的页面开个天窗不好看,那用一张来代替:

RewriteEngine on
RewriteCond %{ HTTP_REFERER } !^$
RewriteCond %{ HTTP_REFERER } !^http://(www.)?mydomain.com/.*$ [NC]
RewriteRule .(gif&line;jpg)$ http://www.mydomain.com/替代名 [R,L]

其它补充:

在给出如何配置Apache支持.htaccess文件之前,首先申明一下:使用.htaccess文件,会降低httpd服务器的一点性能。

配置方法

找到Apache的httpd.conf配置文件,编辑器打开。

//找到
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>

//修改为

<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>

//就可以了

/*
如果需要使用.htaccess以外的其他文件名,可以用AccessFileName指令来改变。
例如,需要使用.config ,则可以在服务器配置文件中按以下方法配置:
*/
AccessFileName .config  通常,.htaccess文件使用的配置语法和主配置文件一样。AllowOverride指令按类别决定了.htaccess文件中哪些指令才是有效的。

(不)使用.htaccess文件的场合
一般情况下,不应该使用.htaccess文件,除非你对主配置文件没有访问权限。有一种很常见的误解,认为用户认证只能通过.htaccess文件实现,其实并不是这样,把用户认证写在主配置文件中是完全可行的,而且是一种很好的方法。
.htaccess文件应该被用在内容提供者需要针对特定目录改变服务器的配置而又没有root权限的情况下。如果服务器管理员不愿意频繁修改配置,则可以允许用户通过.htaccess文件自己修改配置,尤其是ISP在同一个机器上运行了多个用户站点,而又希望用户可以自己改变配置的情况下。
虽然如此,一般都应该尽可能地避免使用.htaccess文件。任何希望放在.htaccess文件中的配置,都可以放在主配置文件的段中,而且更高效。
避免使用.htaccess文件有两个主要原因。
首先是性能。如果AllowOverride启用了.htaccess文件,则Apache需要在每个目录中查找.htaccess文件,因此,无论是否真正用到,启用.htaccess都会导致性能的下降。另外,对每一个请求,都需要读取一次.htaccess文件。
还有,Apache必须在所有上级的目录中查找.htaccess文件,以使所有有效的指令都起作用,所以,如果请求/ctusky/ctu/sky中的页面,Apache必须查找以下文件:

/.htaccess
/ctusky/.htaccess
/ctusky/ctu/.htaccess
/ctusky/ctu/sky/.htaccess  一共就要访问4个额外的文件,就算这些文件都不存在,这也是本文开始说会影响服务器的一点性能的原因。
其次是安全。这样会允许用户自己修改服务器的配置,这可能会导致某些意想不到的修改,所以请认真考虑是否应当给予用户这样的特权。