2019/11/29

メモ:PowerShell Remoting from Windows to Linux (Container)

デスクトップ PC の年末のお掃除を終えたので(無関係だけど結構すごかった)、Linux に PowerShell Core 6 を入れて、Windows の Windows PowerShell 5.1 から PowerShell Remoting で接続してみようとふと思った。

PowerShell Core の PowerShell Remoting over SSH ではなくて、Windows PowerShell 5.1 からWS-Man プロトコルで。

せっかくなので、Windows 10 の Docker Desktop の LCOW(Experimental)環境で実行した ubuntu:latest(18.04 LTS)の Linux コンテナー環境で試してみる。試し終わったら自動破棄(コンテナーだと汚さず試せる)。

docker run -it --rm ubuntu:latest bash


Linux コンテナーにて...

ubuntu official イメージにとりあえず wget と cron を追加。(Linux コンテナーは root 権限で接続されるけど、通常の Linux 環境の場合は sudo apt-get ... や sudo dkpg ... で)


# apt-get update
# apt-get install -y wget
# apt-get install -y cron

PowerShell Core 6 をインストール。

# wget -q https://packages.microsoft.com/config/ubuntu/18.04/packages-microsoft-prod.deb
# dpkg -i ./packages-microsoft-prod.deb
# apt-get update
# apt-get install -y powershell

OMI(Open Management Infrastructure) Server をインストール。

# wget https://github.com/microsoft/omi/releases/download/v1.6.0/omi-1.6.0-0.ssl_110.ulinux.x64.deb
# dpkg -i ./omi-1.6.0-0.ssl_110.ulinux.x64.deb

RSRP(PowerShell Remoting Protocol) のサポートをインストール。

# wget https://github.com/PowerShell/psl-omi-provider/releases/download/v1.4.1-28/psrp-1.4.1-28.universal.x64.deb
# dpkg -i ./psrp-1.4.1-28.universal.x64.deb

ユーザー作成。Linux コンテナーのユーザーはパスワードなし root だから使えないので。

# useradd -m demouser
# passwd demouser

NAT IP アドレス(X.X.X.X)を確認。

# hostname -I
(またはホスト側で docker inspect コンテナーID -f="{{。NetworkSettings.Networks.nat.IPAddress}}"で確認)

Windows にて...

コマンドプロンプト(管理者)で WinRM と TrustedHosts を構成(未構成の場合)。


C:\Windows\System32> winrm qc   
C:\Windows\System32> winrm set winrm/config/Client @{TrustedHosts="*"}

Windows PowerShell (管理者権限不要)から Enter-PSSession (または Invoke-Command)で接続。

PS C:\> $cred = Get-Credential (demouser の資格情報を入力)
PS C:\> $o = New-PSSessionOption -SkipCACheck -SkipRevocationCheck -SkipCNCheck
PS C:\> Enter-PSSession -ComputerName X.X.X.X -Credential $cred -Authentication basic -UseSSL -SessionOption $o
[X.X.X.X]: PS /home/demouser>

大成功!だからといって、Linux に PowerShell Remoting の必要性が思いつかないけど。

参考:
Linux への PowerShell Core のインストール(docs.microsoft.com)
https://docs.microsoft.com/ja-jp/powershell/scripting/install/installing-powershell-core-on-linux?view=powershell-6
Open Management Infrastructure (GitHub)
https://github.com/microsoft/omi
PSRP Linux support library (GitHub)
https://github.com/PowerShell/psl-omi-provider
PowerShell remoting between Windows and Linux (4sysops)
https://4sysops.com/archives/powershell-remoting-between-windows-and-linux/

ところで、Linux コンテナーで試したのは、PowerShell Direct(→ メモ: PowerShell Direct to Windows Server Core Container ) で接続できるかどうか試したかったから。

できないと思ってたけど、やっぱりダメでした。
pwsh(PowerShell Core 6 の pwsh でなくて、powershell.exe を実行しようとしてるのかなぁ?

1 件のコメント:

  1. PowerShell Direct が Linux ゲストに使えないのは、ゲストサービス(統合サービス)の Hyper-V PowerShell Direct Service(Windows ゲストの場合は vmicvmsession)が無いから。Linux ゲスト用は not available。https://docs.microsoft.com/ja-jp/virtualization/hyper-v-on-windows/reference/integration-services

    返信削除

注: コメントを投稿できるのは、このブログのメンバーだけです。