CSI: 防火墙规则禁用了远程桌面之后如何用PowerShell重新启用远程桌面

[原文发表地址] CSI: Re-enabling Remote Desktop with PowerShell after you've blocked it with your own firewall rule

[原文发表时间]10/14/2013

收到一封来自Seán McDonnell的很好的邮件。

问题是这样子的:

我建了一台Azure的虚拟机,系统是Windows Server 2012.

我不小心禁用了远程桌面的Windows防火墙规则(在我进行远程连接的时候),就如你能想象的那样,连接中断了。

我正在为找到重新启用这个规则的方法发愁。

我没有问这个是怎么发生的,因为大家清楚这种感觉,你敲键盘并输入一些东西,而且你知道你敲击键盘之后会发生什么样的错误,但是为时已晚。吸引力让你搞砸了。

我建议Seán用远程的PowerShell登录那个虚拟机,开启远程桌面连接的防火墙规则。远程PowerShell是像在*nix里面的”SSH”一样的.你可以登录一个远程的终端,并且做任何你想要做的事情。

Seán经验的文字版
  • 确保在Azure 门户上的Endpoints选项里面的PowerShell是开启的。
  • 获取服务器的证书(PowerShell需要这个证书执行远程命令)。你可以通过自己的域里面的这个URL https://yourdomain.cloudapp.net:12345(其中12345是PowerShell用的端口号)来获取服务器的证书
  • 从这个网站上将SSL证书导出,保存为.CER文件然后在你的本地机器上安装这个.CER文件。
  • 将它保存在你的电脑上“受信任的根证书颁发机构”的存储区下面。。
  • 在你的本地机器上以管理员权限打开PowerShell,然后输入:Enter-PSSession -ComputerName yourdomain.cloudapp.net -Port 5986 -Credential YourUserName –UseSSL
  • 一个登录界面就会出现,输入你的虚拟机的登录x信息。
  • 你就可以在Azure虚拟机上执行命令了。在Seán的状况下,他运行了下边的命令:” netsh advfirewall firewall set rule group="remote desktop" new enable=Yes”然后退出PowerShell,就可以远程连接到那个机器了
Seán经验的具体细节截图版:

确保在Azure门户上的Endpoints选项里面的PowerShell是开启的。

获取服务器的证书(PowerShell需要这个证书来创建远程会话)。你可以通过自己的域的这个URL https://yourdomain.cloudapp.net:12345(其中12345是PowerShell用的端口号)来获取服务器的证书。

点击细节这个标签然后点击”Copy to File…”

保证第一个可选项目被选上,然后保存这个文件到本地机器

当这个文件生成并保存到本地后,通过双击”证书名字.cer” 文件来安装这个证书。

把这个证书安装在下图选中的文件夹下面:

以管理员权限打开PowerShell然后执行接下来的命令(将用户名和域名替换成你自己的)

一个登录信息的界面就出现了,你要在这个界面输入你的虚拟机的用户名和密码:

如果成功的话,很显然,你应该已经成功地启动了一个与虚拟机的远程会话。

“Enter-PSSession -ComputerName yourdomain.cloudapp.net -Port 5986 -Credential YourUserName -UseSSL ”

用下边的命令来重新开启防火墙的规则:

“netsh advfirewall firewall set rule group="remote desktop" new enable=Yes “

最后的步骤是退出PowerShell任务,用远程桌面连接到虚拟机上。成功了!

希望我写的这些能够帮助到其他人。感谢肖恩这个很好的问题以及分享的经验截图!