zoukankan      html  css  js  c++  java
  • Powershell远程管理 二

        上文Powershell 远程管理 (一)和大家大概的讲述了一个我的远程管理的过程,今天主要和大家说说ps 在交互式会话的管理方式也就是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的配置

  • 相关阅读:
    实现ls(课上作业)
    20181217 (2)
    20181217 (1)
    ubuntu开启远程ssh登陆本机功能
    解决ubuntu下Could not get lock的问题
    博客园生成目录结构
    np.mean以及np.std用法
    解决 Could not find a version that satisfies the requirement torch==1.4.0
    github下载ocr模型 windows直接解压出问题
    centos7 连接不上网络解决办法
  • 原文地址:https://www.cnblogs.com/bhtfg538/p/1875707.html
Copyright © 2011-2022 走看看