• Secure Shell  Encounter

前回の続きで、Windows 11マシンにOpenSSHサーバーを設定する。「設定 ⇒ システム ⇒ オプション機能 ⇒ オプション機能を追加する ⇒ OpenSSHサーバー選択 ⇒ 追加」でOpenSSHサーバーを選択して追加する。

最近のWindowsでは、パスワードなしログインが可能になっているため、OpenSSHサーバーにするWindowsマシンにもログインパスワードが記録されていない可能性がある。このため、最初から公開鍵でログインできるようにする。

Windowsのユーザーが管理者(管理者に昇格できるユーザー)になっている場合、WindowsのSSHサーバーでは管理者ログイン扱いとなる。管理者かどうかの確認は「設定 ⇒ アカウント」のページで行える。Windowsマシンの個人利用では、自分自身を管理者として登録にしておくのが普通なので管理者であるとして以後の作業を解説する。

管理者か標準ユーザーかにより、Windows版OpenSSHサーバーでは、クライアントの公開鍵を登録する場所が異なる。管理者の場合、作業は管理者権限でコンソールをひらき、「C:\ProgramData\ssh」で行う。

クライアントで作成した公開鍵ファイル(id_ed25519.pub)の中にはテキストが入っている。これをSSHサーバー側の


C:\ProgramData\ssh\administrators_authorized_keys

の末尾に追加する。たとえばメモ帳で開き、テキストを貼り付けるなどの方法が使える。このファイルはテキストファイルだが、文字エンコードはBOMが入ってしまうのでWindows PowerShell標準のUnicode/UTF-16LEだけは避ける。UTF-16LEでなければUTF-8でもASCIIでも構わない。

もし、このファイルがなければ、新規に作成するが、このときに限って、id_ed25519.pubをadministrators_authorized_keysという名前で、コピーしてよい。一般ユーザー(非管理者)の場合には、公開鍵は、ユーザーのホームディレクトリにある%userprofile%\.ssh\authorized_keysに追記する。

最後に、OpenSSHサーバーを自動起動として設定する。これには、管理者権限で以下のPowerShellコマンドを実行する。


Set-Service -StartupType AutomaticDelayedStart sshd
Start-Service sshd

これで、クライアントマシンから接続が可能になるはずだ。クライアント側でのSSHキー生成(前回解説)からここまでの手順を(図01)に示す。

  • 図01: OpenSSH SSHサーバー(sshd)をインストールしたする。そのあと、クライアント側で作成した公開鍵を、サーバー側のC:\ProgramData\ssh\administrators_authorized_keys(管理者)または、%userprofile%\.ssh\authorized_keys(通常ユーザー)に追記する。次にOpenSSH SSHサーバーサービスを自動起動に設定して起動する。これでクライアントからの接続を受け付けるようになる

ログインは、


ssh.exe <ユーザー名>@<サーバーホスト名>

とする。なお<サーバーホスト名>はIPアドレスでも構わない。

標準では、sshでログインするとcmd.exeがシェルとして起動するが、SSHサーバー側の以下のレジストリを変更して、Windows PowerShellを起動させることが可能だ。


キー:HKLM:\SOFTWARE\OpenSSH
名前:DefaultShell
形式:文字列
値:C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe

PowerShellからレジストリを書き換えるなら、


new-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -PropertyType String -Force

とする。もっとも、cmd.exeでログインしたあと必要に応じてPowerShell.exe(Windows PowerShell)やpwsh.exe(PowerShell。C:\Program Files\PowerShell\7\pwsh.exe)を起動してもかまわない。この方が、SSHでのログイン時に、プロファイル(サーバー側PowerShell環境の設定に依存)読み込みの時間を取られずに済む。シェルとして何を起動するのかは、SSHでログインしたあとにどんな作業をするかで決まる。ご自身の使い方に合わせてシェルを選択する。

今回のタイトルネタは、E・E・スミスの「Subspace Encounter」(1983年。未訳)である。前回のタイトルネタで使った「Subspace Explorers」(1960年。邦題 大宇宙の探求者。創元SF文庫)の続編だが、未発表原稿を元にスミスの死後18年たってから出版された。