利用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 ...
随机推荐
- MVC +EF+linq 多表联查
关于linq的多表联查效果的实现: 后台多表查询 内连接: SELECT [Extent2].[partID] AS [partID], [Extent1].[userName] AS [userN ...
- Ext checkbox
Ext.require([ 'Ext.grid.*', 'Ext.data.*', 'Ext.util.*', 'Ext.grid.PagingScroller', ...
- WPF实现摄像头镜像翻转
之前的项目需要镜像翻转摄像头视频,使用Aforge.Net来处理视频. 一开始考虑直接从Aforge.Net读取没一帧视频图片,然后复制给WPF的Image控件,这种方法基本很卡,所以放弃了. 考虑到 ...
- hibernate_validator_04
对象图--个人觉得就是关联验证 ean Validation API不仅能够用来校验单个的实例对象,还能够用来校验完整的对象图.要使用这个功能,只需要在一个有关联关系的字段或者属性上标注 @Valid ...
- 分享一个md5类
这个md5干嘛用的,大家比我清楚就不说了,这里不是讲md5的原理.要讲md5的原理,网上一大堆,我也不是什么算法很厉害的人,我只是算法搬运工.咱是一般程序员,有时候能完成业务需要就可以,那些伟大算法的 ...
- underscorejs-pluck学习
2.14 pluck 2.14.1 语法: _.pluck(list, key) 2.14.2 说明: pluck方法根据key对list数组中的每个对象进行检索,返回检索成功的属性值,否则返回und ...
- 使用grunt压缩css是能否设置background-size不压缩进去呢?否则ie8不能识别
.index-bg{ background:url(img/index-bg-t.5344b19d.jpg) center center/cover no-repeat } 比如上面这样ie8不能识别 ...
- Delphi-Delete 过程
过程名称 Delete 所在单元 System 过程原型 procedure Delete ( var Source : string; StartChar : Integer; Count : In ...
- Android模拟器Genymotion安装向导
Genymotion简述 Genymotion提供Android虚拟环境的工具集.相信很多Android开发者一定受够了速度慢.体验差效率及其地下的官方模拟器了.如果你没有物理机器,又不想忍受官方模拟 ...
- Android4.2增加新键值
这里添加新的键值,不是毫无凭据凭空创造的一个键值, 而是根据kernel中检测到的按键值,然后转化为android所需要的数值: 以添加一个linux键值为217,把它映射为android的键值Bro ...