RDP 挂了?快用 PowerShell 拯救你的WindowsServer!

注意,本文以Azure为例,非Azure可能需要提前配置服务器才可使用以下方法!关于配置

Azure以大容量、高效、运算等等优势与GCE在云计算与云虚拟机方面可谓是旗鼓相当,而又因为Azure是Microsoft旗下的产品,自家的Windows更是在Azure上运用的多。

我就有一台 Azure 的 Windows 2012 R2 DataCenter 版本,用于帮我跑一部分服务。然而事情的起因要从双十二那天说起.....

来不及看故事的请点击这里快速传送到解决方案

本文感谢@cyy的全程陪伴

12/12/2015

这天有个小伙伴找我,说我Azure闲着也是闲着可以帮他跑跑服务,主要是几个同学学习用,为了破解RDP的用户连接数量给了我一个名为RDPWarp的github-repo脚本。

shock-1

GitHub: binarymaster/rdpwrap

想想也没啥问题,就clone了之后跑了一遍,然后当时RDP就掉线了,想了想这个就是修改RDP的,掉线也正常,重连就OK啦

然而,当时真的是一切安好,重连成功了。

当时并没有觉得怎么样,于是时间就这么过去了.....

27/12/2015

忍受不了RDP的过程中频繁出现的客户端奔溃提示,我猜测可能是这个脚本搞的鬼,于是进去执行了Uninstall.bat

杯具从此开始了.....

shock-2shock-3

然后开始想有啥办法能解决这个问题,想到了开Azure的时候默认是会开启远程的PowerShell的,去Endpoint那栏看了一下,果然有个PowerShell的条目:

shock-4

然后听说了不能加端口、证书验证的问题。(Azure上面的机器位于公网Cloud上面,一般不会加入域,PowerShell远程跨域访问为了安全须要使用HTTPS连接,在服务器上配置让RinRM服务只允许使用HTTPS连接。)

shock-5

买过多年VPS的我和他都想到过商家可能存在个后台shell,然而别想了,Azure是没有的.....

shock-6

接下来测试了一遍端口,tcping显示是通的,又涉及到证书trust的问题:

shock-7

shock-17

然后又想到可以用我在这台服务器上做的OpenVPN,内网连接PS测试,结果我机子不争气,没法连接OpenVPN.....遂作罢

shock-8

然后我用一套特殊的想法成功的用本地的PowerShell服务连接到了那台Azure上:

shock-9 shock-10

shock-15

感觉自己跟开了挂一样,切换目录、执行脚本、重连RDP一气呵成,最后点Connect的时候手都是在抖得......

事后

shock-11

shock-12 shock-13shock-14

解决办法

首先,使用游览器连接到你的Azure分发域名(私有服务器可连接到自己的域名,也可以是IP),后加你的PowerShell远程管理端口。默认的端口是5986

然后点击任务栏的绿色小锁(可能会提示自签证书不信任之类的,无视),找到证书,下载,然后导入证书

导入的时候记得选择导入路径,如图:

shock-16

导入成功后,以管理员权限打开PowerShell:

shock-18

然后敲入以下命令,回车:

之后就可以看到PowerShell的界面啦!

[!!!注意!!!]千万别用PowerShell里File菜单底下的那个远程连接

shock-19

这货就貌似没法连接.....

附上几个常用的恢复命令:

重新开启防火墙的规则

重启RDP服务

特定端口入站规则

修改RDP服务的端口

启动所有停止的网络服务

非Azure的WindowsServer下远程PowerShell的配置

开启WinRM服务

通过远程桌面连接到服务器(VM)上面,以管理员权限打开PowerShell控制台,运行下面命令:

WinRM 快速配置
正在运行命令“Set-WSManQuickConfig”,以便通过 Windows 远程管理(WinRM)服务对该计算机进行远程管理。
其中包括:
1. 启动或重新启动(如果已启动) WinRM 服务
2. 将 WinRM 服务启动类型设置为“自动”
3. 创建侦听程序以接受任意 IP 地址上的请求
4. 为 WS-Management 通信启用 Windows 防火墙入站规则例外(仅适用于 http)。

是否继续?
[Y] 是(Y) [A] 全是(A) [N] 否(N) [L] 全否(L) [S] 挂起(S) [?] 帮助 (默认值为“Y”): Y
WinRM 已更新为接收请求。
成功更改 WinRM 服务类型。
已启动 WinRM 服务。

WinRM 已经进行了更新,以用于远程管理。
在 HTTP://* 上创建 WinRM 侦听程序接受 WS-Man 对此机器上任意 IP 的请求。
WinRM 防火墙异常已启用。
已配置 LocalAccountTokenFilterPolicy 以远程向本地用户授予管理权限。

确认
是否确实要执行此操作?
正在目标“名称: microsoft.powershell SDDL:
O:NSG:BAD:P(A;;GA;;;BA)(A;;GA;;;RM)S:P(AU;FA;GA;;;WD)(AU;SA;GXGW;;;WD)。这允许选定的用户在此计算机上远程运行 Windows
PowerShell 命令。”上执行操作“Set-PSSessionConfiguration”。
[Y] 是(Y) [A] 全是(A) [N] 否(N) [L] 全否(L) [S] 挂起(S) [?] 帮助 (默认值为“Y”): Y

确认
是否确实要执行此操作?
正在目标“名称: microsoft.powershell.workflow SDDL:
O:NSG:BAD:P(A;;GA;;;BA)(A;;GA;;;RM)S:P(AU;FA;GA;;;WD)(AU;SA;GXGW;;;WD)。这允许选定的用户在此计算机上远程运行 Windows
PowerShell 命令。”上执行操作“Set-PSSessionConfiguration”。
[Y] 是(Y) [A] 全是(A) [N] 否(N) [L] 全否(L) [S] 挂起(S) [?] 帮助 (默认值为“Y”): Y

确认
是否确实要执行此操作?
正在目标“名称: microsoft.powershell32 SDDL:
O:NSG:BAD:P(A;;GA;;;BA)(A;;GA;;;RM)S:P(AU;FA;GA;;;WD)(AU;SA;GXGW;;;WD)。这允许选定的用户在此计算机上远程运行 Windows
PowerShell 命令。”上执行操作“Set-PSSessionConfiguration”。
[Y] 是(Y) [A] 全是(A) [N] 否(N) [L] 全否(L) [S] 挂起(S) [?] 帮助 (默认值为“Y”): Y

配置WinRM使用HTTPS连接

声明: 本文采用 BY-NC-SA 协议进行授权 | Deamwork
转载请注明转自《RDP 挂了?快用 PowerShell 拯救你的WindowsServer!
本文地址:https://www.deamwork.com/archives/rdp-failed-use-powershell-to-rescue-your-azure.orz6

回复 (0)

› 尚无评论。

发表评论 修改评论取消编辑

允许使用的标签 - 您可以在评论中使用如下的 HTML 标签以及属性。

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <img src="" alt=""> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

 :mrgreen:  :|  :twisted:  :arrow:  8O  :)  :?  8-)  :evil:  :D  :idea:  :oops:  :P  :roll:  ;)  :cry:  :o  :lol:  :x  :(  :!:  :?:

引用通告 (0)

› 尚无引用通告。

欢迎来到Deamwork! o(∩_∩)o
X