PowerShell CoreでSSH接続
PowerShell Core 6.0からリモートセッションプロトコルにSSHが利用できるようになっている。OpenSSHで接続する場合と違って、接続先ホストにPowerShell Coreが存在しており、かつ、sshdからPowerShell Coreが起動するように設定されている必要があるのだが、SSHで接続できるようになった意義は大きい。これによってmacOSやLinuxといったホストにもPowreShell Coreから接続できるようになったからだ。
PowerShell Core 6.0では次のようなコマンドレットでSSH経由の接続を実施できる。
PowerShell Core 6.0からSSH接続
Enter-PSSession -HostName ホスト名 -UserName ユーザ名
オプションの指定方法はPowerShell流になっているが、これはOpenSSHのユーザからすると馴染みのない方法だ。これがPowerShell Core 6.1では若干拡張され、次のような使い方ができるようになった。
PowerShell Core 6.1からはこのような指定が可能になった
Enter-PSSession -HostName ユーザ名@ホスト名:ポート番号
こちらの指定方法はsshコマンドの引数に指定する方法と同じだ。sshユーザとしてはこちらの方がよく馴染む。
SSHで接続するための準備
PowerShell CoreからSSH接続するためには、sshd側の設定を変更してPowerShell Coreが起動するようにしておく必要がある。
macOSおよびLinuxの場合には次のような設定をsshd_configに追加する。
sshd_config設定ファイルに追加する設定(macOS)
Subsystem powershell /usr/local/bin/pwsh -sshs -NoLogo -NoProfile
sshd_config設定ファイルに追加する設定(Linux)
Subsystem powershell /usr/bin/pwsh -sshs -NoLogo -NoProfile
Windowsの場合はパスに空白が含まれるので、次のようにリンクを作成してから、設定ファイルにリンクの方を指定する。
空白を含まないパスをリンクで用意
mklink /D c:\pwsh "C:\Program Files\PowerShell\6.1.0"
sshd_config設定ファイルに追加する設定(Windows)
Subsystem powershell c:\pwsh\pwsh.exe -sshs -NoLogo -NoProfile
これでSSH経由での接続のあとにPowerShell Coreが起動するようになる。設定を反映させるためにsshdを再起動する。
sshdの再起動(macOS)
sudo launchctl stop com.openssh.sshd
sudo launchctl start com.openssh.sshd
sshdの再起動(Linux)
sudo service sshd restart
sshdの再起動(Windows)
Restart-Service sshd
これで準備完了だ。
PowerShell CoreからSSH接続
PowerShell Core 6.0からは次のようにSSH経由で接続できる。
PowerShell Core 6.1からは次のようにも接続できるようになった。
リモート接続できるようになるとPowerShellの強力な機能を使ってローカルとリモートの間でデータのやりとりが可能になる。本連載ではリモートに関してはまだ取り上げていないが、このあたりも追って紹介していこう。
SSH経由でmacOSやLinuxにログインできるようになると、俄然管理用シェルとしてのPowerShell Coreの本領が発揮できるというものだ。