Setup PowerShell SSH Remoting in PowerShell 6

With PowerShell version 6, Microsoft introduced PowerShell Remoting over SSH, which allows true multiplatform PowerShell remoting between Linux, macOS and Windows. PowerShell SSHリモーティングは、SSHサブシステムとしてターゲットマシン上にPowerShellホストプロセスを作成します。 通常、PowerShell リモートは接続ネゴシエーションとデータ転送に WinRM を使用しますが、WinRM は Windows ベースのマシンでしか使用できません。

また、いくつかの欠点もあります。 SSH ベースのリモーティングは、現在、リモート エンドポイント設定と JEA (Just Enough Administration) をサポートしていません。 また、これは単なる PowerShell SSH クライアントではないことを理解することが重要です。

PowerShell Remoting で SSH トランスポートを使用する

SSH で PowerShell リモート化を使用するには、PowerShell リモート化で使用した WinRM と同じコマンドレットを使用することができます。

  • New-PSSession
  • Enter-PSSession
  • Invoke-Command

PowerShell SSH リモート化を使用している場合、これらのコマンドレットに 3 つの新しいパラメーターが追加されました。

  • -HostName (-Computername の代わり。 SSH ターゲットを定義します)
  • -UserName (-Credentials の代わりに -UserName パラメータを使用します)
  • -KeyFilePath (SSH 鍵認証を使用している場合、-UserName パラメータを使用できます)。KeyFilePath パラメーターで鍵ファイルを指定します)
 New-PSSession -HostName tomsssh.server.com -UserName thomas

Setup PowerShell SSH Remoting

PowerShell SSH で作業するには、次の手順で行います。 は、すべてのシステムおよびマシンで、次の手順を完了する必要があります。

  • Install OpenSSH Server and Client
    • OpenSSH for Windows は Windows 10 (1809) と Windows Server 2019 でオプション機能として直接利用できます。
    • Linux ではプラットフォームに応じて OpenSSH をインストールします
  • すべてのシステムに PowerShell 6 をインストールします
  • SSH サブシステムを構成してリモート マシンで PowerShell プロセスをホストします
  • パスワードまたはキーベースの認証を構成します

Windows でステップごとに SSH リモートを設定します

ステップ 1: まず、WindowsにPowerShell 6をインストールする必要があります。 PowerShell 6 を簡単にインストールするには、私のブログ記事を参照してください。

Install PowerShell 6

Step 2: OpenSSH Client と Open SSH Server をインストールします。 クライアントとサーバーをインストールし、OpenSSH サーバーを初期設定するには、次のコマンドを使用します。

 # Install the OpenSSH Client and Server Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0 Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0 # Initial Configuration of SSH Server Start-Service sshd Set-Service -Name sshd -StartupType 'Automatic' # Confirm the Firewall rule is configured. It should be created automatically by setup. Get-NetFirewallRule -Name *ssh* # There should be a firewall rule named "OpenSSH-Server-In-TCP", which should be enabled

ステップ2.1: 現在、Windows 用 OpenSSH にはバグがあり、パスはスペースを受け付けません。 スペースを含まないディレクトリへのシンボリックリンクを作成する必要があります。

 mklink /D c:\pwsh "C:\Program Files\PowerShell"

Step 3: ターゲットマシンで $env:ProgramDatassh にある sshd_config ファイルを設定、編集する。

Edit sshd_config

Check that password authentication is enabled

PasswordAuthentication yes

Add the Subsystem for PowerShell

Subsystem powershell c:\pwsh\pwsh.exe -sshs -NoLogo -NoProfile

Optional enable key authentication

PubkeyAuthentication yes

If you interested to set up key based authentication with OpenSSH on Windows Server, check out the blog post on ITOpstalk.NetSupported by ITOpstalk.ITOpStalk.NetSupported by OpenSSH on Windows Server.com に掲載された Orin Thomas (Microsoft Cloud Advocate) のブログ投稿をご覧ください。

Step 4: Restart the sshd service

 Restart-Service sshd

ステップごとに設定 Linux (Ubuntu 18.X) 上の SSH リモーティング04)

ステップ1:まず、LinuxにPowerShell 6をインストールする必要があります。 PowerShell 6 を簡単にインストールするには、私のブログ記事に従ってください。

Install PowerShell 6 Linux

Step 2: OpenSSH Client と Open SSH Server をインストールします。 クライアントとサーバーをインストールし、OpenSSHサーバーを初期設定するには、次のコマンドを使用します。

sudo apt install openssh-clientsudo apt install openssh-server

Step 3: ターゲットマシンの /etc/ssh にある sshd_config ファイルを設定および編集します。

Check that password authentication is enabled

PasswordAuthentication yes

Add the Subsystem for PowerShell

Subsystem powershell /usr/bin/pwsh -sshs -NoLogo -NoProfile

Optional enable key authentication

PubkeyAuthentication yes

Step 4: sshd サービスを再起動する

 sudo service sshd restart

SSH Remoting with PowerShell 6

Windows から Linux、Linux から Windows など異なる OS からも PowerShell SSH リモートで接続できるようになりました。 PowerShell 6 SSH Remoting

前述したように、New-PSSession、Enter-PSSession、または Invoke-Command など、使い慣れたコマンドを使用することができます。

PowerShell SSH Remoting Linux to Windows

クライアントとして、PowerShell 6

が動作する Azure Cloud Shell も使用できます。もちろん、Linux から Linux、Windows から Windows への接続も PowerShell SSH remoting で行うことが可能です。 PowerShell SSH remoting については、Microsoft Docs のページで詳しく説明されています。 何か質問があれば、コメントで教えてください。

Tags: Microsoft, PowerShell, PowerShell 6, PowerShell Core, PowerShell over SSH, Powershell Remoting, setup, Setup SSH PowerShell, SSH, SSH PowerShell, SSH Transport Last modified: 2019年4月4日(木

コメントを残す

メールアドレスが公開されることはありません。