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 を簡単にインストールするには、私のブログ記事を参照してください。
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 ファイルを設定、編集する。
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 を簡単にインストールするには、私のブログ記事に従ってください。
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 リモートで接続できるようになりました。
前述したように、New-PSSession、Enter-PSSession、または Invoke-Command など、使い慣れたコマンドを使用することができます。
クライアントとして、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日(木