利用powershell进行远程服务器管理(命令行模式)
Pssession,Pssession是Windows Powershell会话的意思,一个会话,可以共享数据,提供交互式的对话,我们可以为某些命令例如Invoke-Command 制定会话来远程作业。当然我们还能利用Enter-Pssession来直接和远程计算机连接,直接建立一个持续安全的远程对话,来执行我们的所有命令。
我们分三个部分来讲述Powershell Session,首先是域环境下的远程连接,WAN/LAN的远程连接(Trusthost方式),WAN/LAN的远程连接(SSL加密方式),可以先大致的理解为,当我们操作的机器和远程机器处于同一个AD下,那么是可以直接向Powershell使用Kerbors(基于FQDN),NTLM基于ip地址来进行身份标识的传输,一般是通过当前登录到机器的用户凭据。当我们处于另外的网络环境,或者工作机没有入域能够提供域标识的情况下,可以使用信任主机和SSL加密方式来向远程机器提供会话标识的方式。
Powershell基于WinRM和WinRS来建立远程会话的,以及和传统的WMI DCOM的对比。WMI 依赖 DCOM 在远程计算机上执行管理任务,而防火墙往往会阻止所有传入的 DCOM 通信,这使 WMI 很难(如果并非完全不可能)通过 Internet 以编程方式管理计算机 Windows 远程管理(WinRM)是“WS 管理协议的 Microsoft 实施,该协议是基于标准 SOAP、不受防火墙影响的协议,允许不同供应商的硬件和操作系统相互操作。也就是我们在Client使用本地的WinRS(Windows Remote Shell) 向远程的WinRM(Windows Remote Service)基于SOAP 通过http或者https进行连接获取管理数据(底层依旧使用WMI,但是已经被包装了SOAP来通讯了)。必须注意的是:客户端和服务端都必须安装启用WinRM
Solution One:
Client:非域环境 Domain:vm.terry-corp.com(也可以是工作组,我这里用的是域)
客户端打开Powershell 执行 cd wsman::localhost\client 输入ls
PS Microsoft.WSMan.Management\WSMan::localhost\Client> ls
(默认TrustedHosts 为空,当我们在非信任环境下(不能使用Kerbors认证) 的时候,必须使用TrustedHosts或者SSL方式)
##Set-Item TrustedHosts “你的入域机器的IP或者工作组机器”
我这里执行的是:
Set-Item TrustedHosts “192.168.133.67”
查看 ls
Name Value
---- -----
NetworkDelayms 5000
URLPrefix wsman
AllowUnencrypted false
Auth
DefaultPorts
TrustedHosts 192.168.133.67
修改成功!
服务端
首先启用远程访问Enable-PSRemoting –Force
操作会打开WinRM服务,添加WinRM 的防火墙例外,可以在WF.MSC自己再次确认Windows Remote Management的防火墙是否对你的Client有了例外
客户端打开Powershell
Enter-PSSession -ComputerName 192.168.133.67 –Credential vm.terry-corp.com\Administrator
(可以设置自己的凭据,我这里用的域帐号)
成功的话会显示:
[192.168.133.67]: PS C:\Users\Administrator\Documents>
记得退出Exit-Pssession
Solution Two:
WS-Management 加密通过网络传输的所有 Windows PowerShell 内容。UseSSL 是一种额外的保护措施,它通过 HTTPS 连接而不是 HTTP 连接来发送数据。
因此使用SSL方式是一种更加安全可靠的远程管理方式.
SSL的工作原理也是确认客户端和服务端的身份之后再进行握手的,还担保了数据的来源,不被纂改和监听.
首先要生成SSL证书
(题外话:我本来打算使用AD 证书服务来给自己颁发一个机器名的证书,但是我入域机器的机器名是带上了dns后缀名的, 而我的客户端连接使用的是IP地址,那么会被认为证书的CN名和机器名不一致.AD 机器很多时候都是内网环境,所以想直接通过AD证书,那么你的DNS必须在客户端能够被解析.所以我这里使用的是自签名的证书)
可以使用sslself.exe或者makecert.exe
下载SelfSSL http://www.microsoft.com/downloads/...laylang=en
makecert.exe在.NET Framework 工具中有
服务端生成证书
SELFSSL:
C:\Program Files (x86)\IIS Resources\SelfSSL>selfssl.exe /N:CN=192.168.133.67 /V:3600 /T /Q
(ip就是服务端的ip)
MAKECERT:
MakeCert.exe -pe -n "CN=192.168.133.67" -eku 1.3.6.1.5.5.7.3.1 -ss my -sr localMachine -sky exchange –r C:\1.CER
(在C盘根目录下的1.cer)
打开inetmgr 移除默认站点对SSL 443的binding
打开MMC (文件->添加删除 管理单元)找到 证书 选择 本地计算机添加 找到根信任区域
导出刚才的证书
Copy 到客户端,导入证书到根信任区域
再次返回到服务端
打开MMC 找到刚才的证书,复制证书 详细信息里面的 指纹
eb 10 24 5d 89 11 4a 57 4c 0c ba ac 79 b7 3b 3a 05 aa 1b d7
执行CMD
C:\Users\Administrator> winrm create winrm/config/Listener?Address=*+Transport=HTTPS @{Hostname="192.168.133.67";CertificateThumbprint=" eb 10 24 5d 89 11 4a 57 4c 0c ba ac 79 b7 3b 3a 05 aa 1b d7"}
添加对https 的监听,以及添加证书指纹.
成功显示:
ResourceCreated
Address = http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous
ReferenceParameters
ResourceURI = http://schemas.microsoft.com/wbem/wsman/1/config/listener
SelectorSet
Selector: Address = *, Transport = HTTPS
执行Winrm enumerate winrm/config/listener 也可以确认添加是否成功显示:
Listener
Address = *
Transport = HTTPS
Port = 5986
Hostname = 192.168.133.67
Enabled = true
URLPrefix = wsman
CertificateThumbprint = eb 10 24 5d 89 11 4a 57 4c 0c ba ac 79 b7 3b 3a 05 aa 1b d7
ListeningOn = 127.0.0.1, 192.168.28.128, 192.168.133.67, ::1, fe80::5efe:192.168.28.128%13, fe80::5efe:192.168.133.6
7%12, fe80::856d:7551:c80d:b615%11, fe80::c576:2df6:6d25:6da6%10
说明已经正确添加了SSL证书.再次返回到客户端进行连接:
Powershell
Enter-PSSession -ComputerName 192.168.133.67 –Credential vm.terry-corp.com\Administrator –UseSSL
成功显示:
[192.168.133.67]: PS C:\Users\Administrator\Documents>
至此Windows Powershell 的两种方式已经和大家说清楚了,大家不明白的地方可以直接cnblogs联系我.下一篇文章详细讲述如何使用URI 连接远程的WinRM服务进行管理,这主要涉及到IIS 和SSL的配置
利用powershell进行远程服务器管理(命令行模式)的更多相关文章
- python利用paramiko连接远程服务器执行命令
python中的paramiko模块是用来实现ssh连接到远程服务器上的库,在进行连接的时候,可以用来执行命令,也可以用来上传文件. 1.得到一个连接的对象 在进行连接的时候,可以使用如下的代码: d ...
- Centos screen远程会话管理命令
screen参数 -A 将所有的视窗都调整为目前终端机的大小. -d<作业名称> 将指定的screen作业离线. -h<行数> 指定视窗的缓冲区行数. -m 即使目前已在作业中 ...
- Linux服务器命令行模式安装Matlab2014a
Linux服务器命令行模式安装Matlab2014a,有需要的朋友可以参考下. 0.下载安装包 下载Matlab2014a for Linux安装包的ISO镜像文件(感谢万能的度娘)以及破解包(下载地 ...
- windows10 专业版的远程服务器管理工具下载
一.安装远程服务器管理工具: 下载地址: https://www.microsoft.com/zh-cn/download/details.aspx?id=45520 二.关闭远程服务器管理工具: 1 ...
- 从命令行模式运行Windows管理工具。
从命令行模式运行Windows管理工具. 分类: Play Windows 2004-08-06 16:39 6076人阅读 评论(3) 收藏 举报 1.可以直接在开始-〉运行里面输入的管理工具: 文 ...
- myeclipse web servelet调试输入的中文在TOMCAT服务器的命令行显示为????
B 问题:myeclipse web servelet调试输入的中文在TOMCAT服务器的命令行显示为???? 解决:调整JSP页面编码:gb2312--->utf-8
- 01_Git的安装和简单使用(命令行模式+图形化模式)
刚开始用git的小白适用,参考链接:http://www.cnblogs.com/qijunjun/p/7137207.html 实际项目开发中,我们经常会用一些版本控制器来托管自己的代码,今天 ...
- PHP 的命令行模式
php CLI SAPI 内置Web Server 从版本 4.3.0 开始,PHP 提供了一种新类型的 CLI SAPI(Server Application Programming Interfa ...
- PHP 命令行模式实战之cli+mysql 模拟队列批量发送邮件(在Linux环境下PHP 异步执行脚本发送事件通知消息实际案例)
源码地址:https://github.com/Tinywan/PHP_Experience 测试环境配置: 环境:Windows 7系统 .PHP7.0.Apache服务器 PHP框架:ThinkP ...
随机推荐
- DNX概述
1. 什么是.NET执行环境 ? .NET Execution Environment(DNX) 是一个SDK 和运行时环境,它包含所有的你需要创建和运行.net应用程序的组件.它提供一个主机进程,C ...
- asp.net微信开发第五篇----用户分组管理
上一篇已讲解到新建用户分组,移动用户到分组的功能,这一章主要讲解修改分组名称和删除分组 开发者可以使用接口,对公众平台的分组进行查询.创建.修改.删除等操作,也可以使用接口在需要时移动用户到某个分组. ...
- C# Wpf集合双向绑定
说明: msdn中 ObservableCollection<T> 类 表示一个动态数据集合,在添加项.移除项或刷新整个列表时,此集合将提供通知. 在许多情况下,所使用的数据是对 ...
- 156 Useful Run Commands
To Access… Run Command Accessibility Controls access.cpl Accessibility Wizard accwiz Add Hardware Wi ...
- 解决java访问.netWebService的常见问题
到公司没多久,写了一个java调用.net写的webService结果期间用各种方法测试都没有完成,总是抛出异常,最后直接使用SOAP消息去进行调用才成功了,具体代码如下,仅供参考:import ja ...
- 【转载】Think as Customer 以客户为中心的测试理念
纵观各大公司的核心理念,往往都有一条类似“以客户为中心”的价值观.华为公司更是把“以客户为中心”放在其核心价值观的第一条,以显示它的重要性.从我 们入职培训开始,公司就反复强调并引导大家深入讨论,希望 ...
- html form <label>标签基础语法结构与使用案例教程(转载)
在表单布局中会遇到label标签的使用,label没有任何样式效果,有触发对应表单控件功能.比如我们点击单选按钮或多选框前文字对应选项就能被选中,这个就是对文字加了<label>标签实现. ...
- js性能优化--学习笔记
<高性能网站建设进阶指南>: 1.使用局部变量,避免深入作用域查找,局部变量是读写速度最快的:把函数中使用次数超过一次的对象属性和数组存储为局部变量是一个好方法:比如for循环中的.len ...
- js中的 window.location、document.location、document.URL 对像的区别(转载)
原文:http://www.cr173.com/html/18417_1.html 当我们需要对html网页进行转向的时候或是读取当前网页的时候可以用到下面三个对像: window.location. ...
- wamp环境网站根目录更改
1.修改wampserver的默认目录 安装好wampserver后,网站根目录默认为:安装目录\wamp\www,也就是wampserver安装目录下的www文件夹. 我们以更改为:D\www为例. ...