OpenSSH サーバ
OpenSSHサーバを有効にすると、Linuxサーバのようにssh経由でWindows 11にリモートログインできる。設定アプリケーションから「アプリ」→「オプション機能」→「機能を表示」→「OpenSSHサーバー」にチェック→「次へ」→「インストール」を選択し、システムを再起動してOpenSSHサーバを有効化する。
次のように設定ファイルを作成する。
設定ファイルC:\ProgramData\ssh\sshd_configの作成と編集
copy C:\WINDOWS\SYSTEM32\OPENSSH\sshd_config_default C:\ProgramData\ssh\sshd_config
notepad C:\ProgramData\ssh\sshd_config
設定ファイルC:\ProgramData\ssh\sshd_configの編集内容
C:\ProgramData\ssh>fc /n C:\Windows\System32\OpenSSH\sshd_config_default C:\ProgramData\ssh\sshd_config
Comparing files C:\WINDOWS\SYSTEM32\OPENSSH\sshd_config_default and C:\PROGRAMDATA\SSH\SSHD_CONFIG
***** C:\WINDOWS\SYSTEM32\OPENSSH\sshd_config_default
86:
87: Match Group administrators
88: AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
***** C:\PROGRAMDATA\SSH\SSHD_CONFIG
86:
87: #Match Group administrators
88: # AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
*****
C:\ProgramData\ssh\sshd_configファイルの最後の2行を上記差分データのようにコメントする。元の設定のままでは、C:\ProgramData\ssh\administrators_authorized_keysをチェックしに行った後で公開鍵認証そのものが無効になり、${HOME}.ssh\authorized_keysに公開鍵を配置しておいても使われない。${HOME}.ssh\authorized_keysに公開鍵を追加して使えるようにするには、上記のようにMatch Group administratorsの設定を無効化しておく必要がある。
設定を変更したらOpenSSHサーバ(sshd)を起動する。
OpenSSHサーバの起動
Start-Service sshd
Windows 11起動時に自動的にOpenSSHサーバが起動するように、次のコマンドを実行する。
Windows 11起動時に自動的にOpenSSHサーバが起動するように設定
Set-Service -Name sshd -StartupType 'Automatic'
次のコマンドを実行してファイアウォールのルールを表示させ、外部からWindows 11へアクセスできることを確認する。
OpenSSHサーバに関するファイアウォールのルールを確認
Get-NetFirewallRule -Name *ssh*
外部からOpenSSHサーバへアクセスできない設定になっている場合、次のようなコマンドでOpenSSHサーバへアクセスするための設定を追加する。
OpenSSHサーバへアクセスするためのルールを追加
New-NetFirewallRule -Name -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22
OpenSSHサーバを起動したあとで設定ファイルを編集した場合、次のコマンドでOpenSSHサーバを再起動する。
OpenSSHサーバの再起動
Restart-Service sshd
次のコマンドを実行して、リモートログインしてきたユーザーのデフォルトシェルをPowerShell 7へ変更する。
リモートログインしてきたユーザーのデフォルトシェルをPowerShell 7へ変更
New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Program Files\PowerShell\7\pwsh.exe" -PropertyType String -Force
リモートログインを許可するホストの公開鍵を${HOME}.ssh\authorized_keysへ追加しておく。
OpenSSH クライアント
OpenSSHクライアントを有効にすると、Windows 11からLinuxサーバなどにリモートログインできる。OpenSSHクライアントは設定アプリケーションから「アプリ」→「オプション機能」→「機能を表示」→「OpenSSHクライアント」にチェック→「次へ」→「インストール」を選択して有効化する。Windows Terminalでsshコマンドを実行できるか確認する。環境変数Pathの変更が反映されていない場合、いったんシステムを再起動してから確認する。
ssh-keygenコマンドを実行して秘密鍵と公開鍵を生成する。
秘密鍵と公開鍵を設定
ssh-keygen
リモートログインしたいホストの~/.ssh/authorized_keysへ公開鍵を登録しておく。
sshコマンドで設定した他のホストへリモートログインできるか確認する。
アプリケーションのセットアップは記録しておく
アプリケーションのインストールと設定についてすべて記録するのは大変であり面倒だ。しかし、この記録があるのとないのとでは、再インストールしや再セットアップの時の手間が変わってくる。すぐに同じ状態にできることがわかっていれば、アンインストールもそれほど躊躇しなく実施できるようにもなる。
こうしたアプリのセットアップ作業はある程度まとめて一斉にやっておくとよい。新しいWindows 11搭載PCを購入した段階で一気に作業しよう。