Home > Windows にまつわる e.t.c.

Linux からの WinRM アクセスを許可する


WinRM を有効にする

Windows to Windows であれば、PowerShell リモーティングで CUI でのリモート操作ができるようになります。

設定は簡単。PowerShell プロンプトを管理権限で起動して「Enable-PSRemoting -Force」と入力するだけ。
PowerShell は、補完が効くので、TAB 補完すると入力はさらに簡単になります。

enable-psr[TAB] -f[TAB]

Windows Server 2012 以降なら、これだけでリモートから RDP 有効にしたり、サービス入れたり、ごにょごにょ出来るようになります。

Windows Server 2008 R2 以前なら、スクリプティング環境が OFF になっているので、更に「Set-ExecutionPolicy RemoteSigned -Force」します。

PS C:\> Enable-PSRemoting -Force
WinRM は既にこのコンピューター上で要求を受信するように設定されています。
WinRM はリモート管理用に更新されました。
ローカル ユーザーにリモートで管理権限を付与するよう LocalAccountTokenFilterPolicy を構成しました。

PS C:\> Set-ExecutionPolicy RemoteSigned -Force

 

【参考】 PowerShell リモーティング

リモート コンピューターの対話操作(Enter-PSSession)
http://www.vwnet.jp/Windows/PowerShell/EnterPSSession.htm

リモート コンピューターのバッチ操作(Invoke-Command)
http://www.vwnet.jp/Windows/PowerShell/InvokeCommand.htm

リモート コンピューターのパラレル バッチ操作(Invoke-Command -AsJob)
http://www.vwnet.jp/Windows/PowerShell/Invoke-CommandAsJob.htm

 

 

Linux からの接続を許可する

さて、Linux からの接続を許可するには、更に BASIC 認証を許可する必要があります。

winrm get winrm/config/service で現状の設定を確認しましょう。

PS C:\> winrm get winrm/config/service
Service
    RootSDDL = O:NSG:BAD:P(A;;GA;;;BA)(A;;GR;;;IU)S:P(AU;FA;GA;;;WD)(AU;SA;GXGW;;;WD)
    MaxConcurrentOperations = 4294967295
    MaxConcurrentOperationsPerUser = 1500
    EnumerationTimeoutms = 240000
    MaxConnections = 300
    MaxPacketRetrievalTimeSeconds = 120
    AllowUnencrypted = false
    Auth
        Basic = false
        Kerberos = true
        Negotiate = true
        Certificate = false
        CredSSP = false
        CbtHardeningLevel = Relaxed
    DefaultPorts
        HTTP = 5985
        HTTPS = 5986
    IPv4Filter = *
    IPv6Filter = *
    EnableCompatibilityHttpListener = false
    EnableCompatibilityHttpsListener = false
    CertificateThumbprint
    AllowRemoteAccess = true

 

Auth の設定を見ると Basic = false となっているので、こいつを true にする必要があります。

見落としがちなのが AllowUnencrypted = false です。BASIC 認証なので、平文を許可しなくてはならないので、こいつも true にします。

# BASIC 認証許可
winrm set winrm/config/service/auth '@{Basic="true"}'

# 平文許可
winrm set winrm/config/service '@{AllowUnencrypted="true"}'

 

実際に設定するとこんな感じ

PS C:\> winrm set winrm/config/service/auth '@{Basic="true"}'
Auth
    Basic = true
    Kerberos = true
    Negotiate = true
    Certificate = false
    CredSSP = false
    CbtHardeningLevel = Relaxed

PS C:\> winrm set winrm/config/service '@{AllowUnencrypted="true"}'
Service
    RootSDDL = O:NSG:BAD:P(A;;GA;;;BA)(A;;GR;;;IU)S:P(AU;FA;GA;;;WD)(AU;SA;GXGW;;;WD)
    MaxConcurrentOperations = 4294967295
    MaxConcurrentOperationsPerUser = 1500
    EnumerationTimeoutms = 240000
    MaxConnections = 300
    MaxPacketRetrievalTimeSeconds = 120
    AllowUnencrypted = true
    Auth
        Basic = true
        Kerberos = true
        Negotiate = true
        Certificate = false
        CredSSP = false
        CbtHardeningLevel = Relaxed
    DefaultPorts
        HTTP = 5985
        HTTPS = 5986
    IPv4Filter = *
    IPv6Filter = *
    EnableCompatibilityHttpListener = false
    EnableCompatibilityHttpsListener = false
    CertificateThumbprint
    AllowRemoteAccess = true

 

これで Linux からの接続許可が出来ました。Linux からは DefaultPorts の HTTP = 5985 で接続できます。

同僚は pywinrm で Windows Server の操作しているようです。

 

back.gif (1980 バイト)

home.gif (1907 バイト)

Copyright © MURA All rights reserved.