在适用mstsc连接winserver服务器的场景下(别问为什么不VNC),可以利用rdp文件等方式减轻连接的操作负担

  • 利用.rdp文件免密登录

rdp文件本质上是一个mstsc的选择,或者不如说mstsc的手动连接窗口是一个由系统管理的rdp文件。

> mstsc --help

在mstsc命令中可以利用已有的rdp文件(中的已有信息)来补全当次的远程连接,最简单的rdp文件包含地址、用户名、密码

address:s:远程桌面地址
username:s:用户名
password 51:b:加密后的密码

如只提供部分信息,如不包含地址,在指令中补全即可

mstsc D://file.rdp -v:10.10.2.128

rdp文件麻烦的地方在于password是经过一次加密的,加密方法在crypt32.lib,WinCrypt.h是有的

BOOL WINAPI CryptProtectData (
DATA_BLOB * pDataIn ,
LPCWSTR szDataDescr ,
DATA_BLOB * pOptionalEntropy ,
PVOID pvReserved ,
CRYPTPROTECT_PROMPTSTRUCT * pPromptStruct ,
DWORD dwFlags ,
DATA_BLOB * pDataOut
) ;

直接使用rdp加密工具即可,百度一大堆,应该也都是封了CryptProtectData的工具

如果有特殊场景不能使用不明exe,或者场景复杂需要批量操作,可以自己C++实现 ,有一些宽字符之类的细节,使用可以参考(一个10年前的文章)

https://www.codeproject.com/Articles/59882/Decrypt-Remote-Desktop-Mobile-password

懒得看英文说明直接照抄转了八百手的博客也行↓这已经不知道是第几百手了

https://blog.csdn.net/wzsy/article/details/14120853

void main ( )
{
DATA_BLOB DataIn ;
DATA_BLOB DataOut ;
// mstsc.exe中使用的是unicode,所以必须做宽字符转换
BYTE * pbDataInput = ( BYTE * ) L "freedom" ;
DWORD cbDataInput = wcslen ( L "freedom" ) * sizeof(wchar_t ) ;
DataIn . pbData = pbDataInput ;
DataIn . cbData = cbDataInput ;
if ( CryptProtectData ( &DataIn, L"password", NULL, NULL, NULL, 0, &DataOut ) )
{
printf ( "The encryption phase worked.\n" ) ;
int count = 0 ;
while ( count // 因为一个unsigned int 占32位
// 转换成成16进制要占两位
// 所以这里需要用%02
printf ( "%02X" , DataOut . pbData [ count ] ) ;
count ++ ;
}
else
{
printf ( "Encryption error using CryptProtectData.\n" ) ;
return - 1 ;
}
}
  • 进一步减少操作:忽略证书和链接身份确认

使用rdp打开远程连接需要进行两次确认,证书的跳过方法参照

https://stackoverflow.com/questions/20686361/how-to-ignore-the-certificate-warning-on-remote-desktop-connection

reg add "HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client" /v "AuthenticationLevelOverride" /t "REG_DWORD" /d 0 /f

rdp的签名则可以参照

https://vircloud.net/operations/rdpsign.html

或者也直接上注册表,参照

https://blog.csdn.net/weixin_41111659/article/details/893722537

创建一个test.reg

Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\LocalDevices]
"127.0.0.1"=dword:0000004c

或者直接使用cmd

reg add "HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\LocalDevices" /v "127.0.0.1" /t "REG_DWORD" /d 76
  • 根据适用场景的封装

在我这个环境下,很多server属于同一个网段,且用户密码都一样,所以不用为每一个server创建一个rdp,只创建一个含用户密码的rdp文件即可:ys.rdp

然后稍微包一个bat脚本

set input=%1%
echo %input% ^ ^
@start reg add "HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\LocalDevices" /v "127.0.0.%input%" /t "REG_DWORD" /d 76
@start mstsc F://ys.bat -v:127.0.0.%input%

需要的时候直接可以连接127.0.0.125

>ys.bat 125

如果server情况比较复杂,根据密码表批量创建对应的rdp,直接双击使用也可以,至于生成密钥要不要封之类的细节就看个人需求了

利用远程桌面管理winserver集群的更多相关文章

  1. 使用Chef管理windows集群

    但凡服务器上了一定规模(百台以上),普通的ssh登录管理的模式就越来越举步维艰.试想Linux发布了一个高危漏洞的补丁,你要把手下成百上千台机器都更新该补丁,如果没有一种自动化方式,那么至少要耗上大半 ...

  2. 使用Chef管理windows集群 | 运维自动化工具

    但凡服务器上了一定规模(百台以上),普通的ssh登录管理的模式就越来越举步维艰.试想Linux发布了一个高危漏洞的补丁,你要把手下成百上千台机器都更新该补丁,如果没有一种自动化方式,那么至少要耗上大半 ...

  3. [转帖]Ansible管理windows集群

    Ansible管理windows集群 http://www.cnblogs.com/Dev0ps/p/10026908.html 写的挺好的 我关注点还是不够好呢 最近公司新项目需要安装400+win ...

  4. 厉害—Ansible管理windows集群

    最近公司新项目需要安装400+windows server 2012系统的工作站,想着怎么能像linux下运用ansible批量管理,linux就很简单了有ssh服务 但是下却没这么简单,但还是有办法 ...

  5. 使用Cloudera部署,管理Hadoop集群

    Hadoop系列之(三):使用Cloudera部署,管理Hadoop集群 http://www.cnblogs.com/ee900222/p/hadoop_3.html Hadoop系列之(一):Ha ...

  6. Remote Desktop Organizer远程桌面管理软件的基本使用和介绍

    <Remote Desktop Organizer>是一款用于远程桌面管理的软件.软件支持windows平台运行. Remote Desktop Organizer 是一款 Windows ...

  7. VLAN 模式下的 OpenStack 管理 vSphere 集群方案

    本文不合适转载,只用于自我学习. 关于为什么要用OpenStack 管理 vSphere 集群,原因可以有很多,特别是一些传统企业,VMware 的使用还是很普遍的,用 OpenStack 纳管至少会 ...

  8. 《Apache kafka实战》读书笔记-管理Kafka集群安全之ACL篇

    <Apache kafka实战>读书笔记-管理Kafka集群安全之ACL篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 想必大家能看到这篇博客的小伙伴,估计你对kaf ...

  9. Hadoop系列之(三):使用Cloudera部署,管理Hadoop集群

    1. Cloudera介绍 Hadoop是一个开源项目,Cloudera对Hadoop进行了商业化,简化了安装过程,并对hadoop做了一些封装. 根据使用的需要,Hadoop集群要安装很多的组件,一 ...

随机推荐

  1. JavaScript利用函数反转数组

    要求: 给定一数组,将其元素倒序排列并输出. 代码实现: // 利用函数翻转任意数组 reverse 翻转 function reverse(arr) { var newArr = []; for ( ...

  2. 15.深入k8s:Event事件处理及其源码分析

    转载请声明出处哦~,本篇文章发布于luozhiyun的博客:https://www.luozhiyun.com 源码版本是1.19 概述 k8s的Event事件是一种资源对象,用于展示集群内发生的情况 ...

  3. 对lambda表达式的字节码实现个人理解 - 简单描述

    暂且抛开具体的代码实现,谈谈个人的理解. 常规的方法调用,具体由哪条指令来执行,实际都是在JVM的规则中就定下来了,比如构造方法使用invokeSpecial,静态方法使用invokeStatic.现 ...

  4. IPA的动态库注入+企业重签名过程

    [摘录]之前在进行iOS测试过程中由于要获取一定数据信息,因此需要对原本的安装包进行代码注入并且重新打包安装,因此就需要使用重签名策略,在此进行分享,希望大家可以使用其中的方法来运用到自身的项目中. ...

  5. MeteoInfoLab脚本示例:计算温度平流

    需要温度和风场U/V分量格点数据,计算中主要用到cdiff函数,结果用GrADS验证一致.脚本程序: print 'Open data files...' f_air = addfile('D:/Te ...

  6. scrapy LinkExtractors

    class scrapy.linkextractors.LinkExtractor Link Extractors 的目的很简单: 提取链接。 每个LinkExtractor有唯一的公共方法是 ext ...

  7. 【C语言程序设计】小游戏之俄罗斯方块(二)!适合初学者上手、练手!

    第二篇,主要实现俄罗斯方块中的主体部分,包括容器的数据结构以及容器的相关操作,特别是大方块和容器之间的交互逻辑,包括碰撞检测,消除检测等等. 1. 容器的表示 大方块的实现涉及到位运算,而容器同样如此 ...

  8. 深入理解RabbitMQ中的prefetch_count参数

    前提 在某一次用户标签服务中大量用到异步流程,使用了RabbitMQ进行解耦.其中,为了提高消费者的处理效率针对了不同节点任务的消费者线程数和prefetch_count参数都做了调整和测试,得到一个 ...

  9. 利用RNN进行中文文本分类(数据集是复旦中文语料)

    利用TfidfVectorizer进行中文文本分类(数据集是复旦中文语料) 1.训练词向量 数据预处理参考利用TfidfVectorizer进行中文文本分类(数据集是复旦中文语料) ,现在我们有了分词 ...

  10. 【原创】xenomai3.1+linux构建linux实时操作系统-基于X86_64和arm

    版权声明:本文为本文为博主原创文章,转载请注明出处.如有问题,欢迎指正.博客地址:https://www.cnblogs.com/wsg1100/ 目录 一.概要 二.环境准备 1.1 安装内核编译工 ...